<?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>71262</bug_id>
          <alias>BrianGrinstead</alias>
          <creation_ts>2011-10-31 18:18:32 -0700</creation_ts>
          <short_desc>Web Inspector: Add colorpicker functionality to color swatches in Styles Sidebar</short_desc>
          <delta_ts>2012-02-15 06:14:35 -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 (Deprecated)</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Brian Grinstead">briangrinstead</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>493697</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2011-10-31 18:18:32 -0700</bug_when>
    <thetext>When clicking on a color swatch, a colorpicker will open to allow changing the CSS value with a colorpicker UI.  This colorpicker will respect existing transparency and color formats as much as possible.  There will still be the ability to switch color formats (as you currently can now by clicking on a swatch), but it will be caused by a right click, or control+click event instead of the current click event.

This is based on the discussion here: http://groups.google.com/group/google-chrome-developer-tools/browse_thread/thread/4dd1e853b8051727

I have a version of this working with a hacked devtools_frontend, and I am working on turning this into a proper patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506289</commentid>
    <comment_count>1</comment_count>
      <attachid>115923</attachid>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2011-11-18 19:01:28 -0800</bug_when>
    <thetext>Created attachment 115923
First attempted patch.  Hopefully have included everything correctly

This is ready for initial UI review, with a couple of caveats.

* Still need to handle UI for cases where picker opens near the bottom of the panel (right now it still shows up below the swatch causing an extra scrollbar).
* Also, there is a bug after adding a new property to the element (the picker hides while dragging).  I am looking into this but since I am new to this project it is somewhat difficult to tell why that acts differently than the standard case.

Even with these issues, I thought I would submit it in the current state to get some feedback while trying to handle them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506509</commentid>
    <comment_count>2</comment_count>
      <attachid>115979</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-20 00:23:46 -0800</bug_when>
    <thetext>Created attachment 115979
[IMAGE] Screenshot with patch applied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506510</commentid>
    <comment_count>3</comment_count>
      <attachid>115923</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-20 00:50:42 -0800</bug_when>
    <thetext>Comment on attachment 115923
First attempted patch.  Hopefully have included everything correctly

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

Thanks for putting it together. I made a first pass on the change to highlight some of the WebKit style guidelines and pointed to the UI utilities you could leverage. I&apos;ll comment on the UI separately.

&gt; Source/WebCore/ChangeLog:3
&gt; +        first commit for colorpicker functionality

This should be below WebInspector: topic, above Reviewed by line. Should also describe what you are doing in 1-2 sentences.

&gt; Source/WebCore/ChangeLog:10
&gt; +        No new tests. (OOPS!)

You should remove this line. There are currently no tests for inspector front-end UI components.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:2
&gt; +WebInspector.Spectrum = function(swatch, rgb)

We are using Element suffix for all DOM element variables: swatch -&gt; swatchElement
Passing Color instead of rgb would make more sense: otherwise it is not clear whether this is rgb or rgba.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:4
&gt; +    this.document = swatch.ownerDocument;

We don&apos;t use iframes at the moment, so you should not need this.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:5
&gt; +    this.swatch = swatch;

Here and below: prefix all private variables that are not accessed from outside this file with &quot;_&quot;. this._swatchElement in this case.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:8
&gt; +    this.element.innerHTML = WebInspector.Spectrum.markup;

We are not using any templating in the front-end, you should create your element using DOM API instead. There is Element.prototype.createChild = function(elementName, className) defined that is likely to make your code compact.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:16
&gt; +    this.slider = this.element.querySelectorAll(&quot;.sp-hue&quot;)[0];

You won&apos;t need these once you create your dom programmatically.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:31
&gt; +        this.updateUI();

Methods should also be private (this._updateUI())

&gt; Source/WebCore/inspector/front-end/Spectrum.js:82
&gt; +WebInspector.Spectrum.hsvToRgb = function(h, s, v, a) {

Seems like this could belong to Color.js

&gt; Source/WebCore/inspector/front-end/Spectrum.js:116
&gt; +WebInspector.Spectrum.rgbToHsv = function(r, g, b, a) {

ditto

&gt; Source/WebCore/inspector/front-end/Spectrum.js:149
&gt; +WebInspector.Spectrum.stopPropagation = function(e) {

Please try to use existing framework methods where possible or define generic ones in utilities.js.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:154
&gt; +    if (typeof name === &quot;object&quot;) {

We are preparing the front-end for closure compilation, so flexibility like this harms us.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:176
&gt; +    return { left: el.totalOffsetLeft(), top: el.totalOffsetTop() };

should be defined on Element.prototype in utilities.js

&gt; Source/WebCore/inspector/front-end/Spectrum.js:179
&gt; +WebInspector.Spectrum.getScrollOffset = function(el) {

ditto

&gt; Source/WebCore/inspector/front-end/Spectrum.js:190
&gt; +WebInspector.Spectrum.draggable = function(element, onmove, onstart, onstop) {

There is WebInspector.elementDragStart that has somewhat similar logic. Have you seen it?

&gt; Source/WebCore/inspector/front-end/Spectrum.js:260
&gt; +WebInspector.Spectrum.prototype = {

This class should probably be called WebInspector.SpectrumControl to better reflect the nature of the component.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:386
&gt; +    addChangeListener: function(listener) {

Inheriting from Object.js provides you with the generic event mechanism. You would declare WebInspector.Spectrum.Event object with event names and dispatch them from here and from onhide.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1680
&gt; +                var rgba = (color.rgba || color.rgb).slice(0);

It sounds like Color class itself is broken. It should maintain single data entry for rgb / rgba.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1681
&gt; +                var spectrum = new WebInspector.Spectrum(swatchElement, rgba);

As I mentioned earlier, passing Color type here would be more straightforward.

&gt; Source/WebCore/inspector/front-end/inspector.css:2644
&gt; +.sp-container { 

Please be more verbose and expand those to .spectrum-*

&gt; Source/WebCore/inspector/front-end/inspector.html:84
&gt; +    &lt;script type=&quot;text/javascript&quot; src=&quot;Spectrum.js&quot;&gt;&lt;/script&gt;

You will need to add this file to: WebCore/WebCore.gypi, WebCore/inspector/front-end/WebKit.qrc and WebCore/WebCore.vcproj/WebCore.vjproj (last one uses tabs, not spaces). Sorry for trouble.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506511</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-20 00:56:42 -0800</bug_when>
    <thetext>Few thoughts on the UI:

1) I don&apos;t see clearly the color I am building. Would be nice to have a large preview box to the left from the main spectrum box.
2) It is hard to assess the transparency. I thought I was chess board mentioned somewhere.
3) Close icon is not consistent with the rest of the UI. Could we drop it and see if it works?
4) It is not clear that transparency control is for tuning transparency.

I thought we didn&apos;t need to mirror values for rgba in the control, but now that I see it embedded, I kinda miss those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506526</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2011-11-20 08:02:58 -0800</bug_when>
    <thetext>This would look best as a popover pointing to the swatch too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506528</commentid>
    <comment_count>6</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2011-11-20 08:23:44 -0800</bug_when>
    <thetext>Copy that, I&apos;ll make the suggested changes.  Should I revert my initial changelog, and rebase all of the new changes into the initial commit, then generate a new changelog and patch?


(In reply to comment #3)
&gt; (From update of attachment 115923 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115923&amp;action=review
&gt; 
&gt; Thanks for putting it together. I made a first pass on the change to highlight some of the WebKit style guidelines and pointed to the UI utilities you could leverage. I&apos;ll comment on the UI separately.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        first commit for colorpicker functionality
&gt; 
&gt; This should be below WebInspector: topic, above Reviewed by line. Should also describe what you are doing in 1-2 sentences.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        No new tests. (OOPS!)
&gt; 
&gt; You should remove this line. There are currently no tests for inspector front-end UI components.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:2
&gt; &gt; +WebInspector.Spectrum = function(swatch, rgb)
&gt; 
&gt; We are using Element suffix for all DOM element variables: swatch -&gt; swatchElement
&gt; Passing Color instead of rgb would make more sense: otherwise it is not clear whether this is rgb or rgba.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:4
&gt; &gt; +    this.document = swatch.ownerDocument;
&gt; 
&gt; We don&apos;t use iframes at the moment, so you should not need this.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:5
&gt; &gt; +    this.swatch = swatch;
&gt; 
&gt; Here and below: prefix all private variables that are not accessed from outside this file with &quot;_&quot;. this._swatchElement in this case.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:8
&gt; &gt; +    this.element.innerHTML = WebInspector.Spectrum.markup;
&gt; 
&gt; We are not using any templating in the front-end, you should create your element using DOM API instead. There is Element.prototype.createChild = function(elementName, className) defined that is likely to make your code compact.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:16
&gt; &gt; +    this.slider = this.element.querySelectorAll(&quot;.sp-hue&quot;)[0];
&gt; 
&gt; You won&apos;t need these once you create your dom programmatically.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:31
&gt; &gt; +        this.updateUI();
&gt; 
&gt; Methods should also be private (this._updateUI())
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:82
&gt; &gt; +WebInspector.Spectrum.hsvToRgb = function(h, s, v, a) {
&gt; 
&gt; Seems like this could belong to Color.js
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:116
&gt; &gt; +WebInspector.Spectrum.rgbToHsv = function(r, g, b, a) {
&gt; 
&gt; ditto
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:149
&gt; &gt; +WebInspector.Spectrum.stopPropagation = function(e) {
&gt; 
&gt; Please try to use existing framework methods where possible or define generic ones in utilities.js.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:154
&gt; &gt; +    if (typeof name === &quot;object&quot;) {
&gt; 
&gt; We are preparing the front-end for closure compilation, so flexibility like this harms us.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:176
&gt; &gt; +    return { left: el.totalOffsetLeft(), top: el.totalOffsetTop() };
&gt; 
&gt; should be defined on Element.prototype in utilities.js
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:179
&gt; &gt; +WebInspector.Spectrum.getScrollOffset = function(el) {
&gt; 
&gt; ditto
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:190
&gt; &gt; +WebInspector.Spectrum.draggable = function(element, onmove, onstart, onstop) {
&gt; 
&gt; There is WebInspector.elementDragStart that has somewhat similar logic. Have you seen it?
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:260
&gt; &gt; +WebInspector.Spectrum.prototype = {
&gt; 
&gt; This class should probably be called WebInspector.SpectrumControl to better reflect the nature of the component.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:386
&gt; &gt; +    addChangeListener: function(listener) {
&gt; 
&gt; Inheriting from Object.js provides you with the generic event mechanism. You would declare WebInspector.Spectrum.Event object with event names and dispatch them from here and from onhide.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1680
&gt; &gt; +                var rgba = (color.rgba || color.rgb).slice(0);
&gt; 
&gt; It sounds like Color class itself is broken. It should maintain single data entry for rgb / rgba.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1681
&gt; &gt; +                var spectrum = new WebInspector.Spectrum(swatchElement, rgba);
&gt; 
&gt; As I mentioned earlier, passing Color type here would be more straightforward.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/inspector.css:2644
&gt; &gt; +.sp-container { 
&gt; 
&gt; Please be more verbose and expand those to .spectrum-*
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/inspector.html:84
&gt; &gt; +    &lt;script type=&quot;text/javascript&quot; src=&quot;Spectrum.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; You will need to add this file to: WebCore/WebCore.gypi, WebCore/inspector/front-end/WebKit.qrc and WebCore/WebCore.vcproj/WebCore.vjproj (last one uses tabs, not spaces). Sorry for trouble.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506529</commentid>
    <comment_count>7</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2011-11-20 08:24:32 -0800</bug_when>
    <thetext>Timothy,
Is there a certain css class or JavaScript function I can use to achieve the popover effect?

Thanks,
Brian

(In reply to comment #5)
&gt; This would look best as a popover pointing to the swatch too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506530</commentid>
    <comment_count>8</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2011-11-20 08:32:21 -0800</bug_when>
    <thetext>There was supposed to be a checkerboard on the original swatch element, but now I see that it isn&apos;t updating properly.  I could do any of these:
 * Make the swatch element update to show transparency (I think this is just a background image that isn&apos;t being applied)
 * Put a checkboard behind the actual colorpicker region and apply transparency to that.  I am not a huge fan of this, since when you have alpha it is hard to see the actual h/s/v you have chosen.
 * Show a label next to the transparency slider to make it clear that it is for changing alpha
 * Show a text representation of currently selected color inside of the picker.  Note: this is currently happening in the actual value element that you are modifying, but it may be hard to see.

I don&apos;t have any problem dropping the close button, it really doesn&apos;t look very good - I just used an existing icon from the project.

(In reply to comment #4)
&gt; Few thoughts on the UI:
&gt; 
&gt; 1) I don&apos;t see clearly the color I am building. Would be nice to have a large preview box to the left from the main spectrum box.
&gt; 2) It is hard to assess the transparency. I thought I was chess board mentioned somewhere.
&gt; 3) Close icon is not consistent with the rest of the UI. Could we drop it and see if it works?
&gt; 4) It is not clear that transparency control is for tuning transparency.
&gt; 
&gt; I thought we didn&apos;t need to mirror values for rgba in the control, but now that I see it embedded, I kinda miss those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506545</commentid>
    <comment_count>9</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-20 10:21:57 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Copy that, I&apos;ll make the suggested changes.  Should I revert my initial changelog, and rebase all of the new changes into the initial commit, then generate a new changelog and patch?

I would re-build ChangeLog, yes.

(In reply to comment #7)
&gt; Is there a certain css class or JavaScript function I can use to achieve the popover effect?
&gt; 

Take a look at the Popover.js and the PopoverHelper there. It is basically a rich focusable tooltip control. I was going to suggest that you use it, but it hardcodes the yellowish background, so I was not sure it applies. It also disappears upon mouse move out, but that should be configurable. In either case you could at least re-use its utility code for positioning your box next to the anchor element.

(In reply to comment #8)
&gt; There was supposed to be a checkerboard on the original swatch element, but now I see that it isn&apos;t updating properly.  I could do any of these:
&gt;  * Make the swatch element update to show transparency (I think this is just a background image that isn&apos;t being applied)

That would be nice.

&gt;  * Put a checkboard behind the actual colorpicker region and apply transparency to that.  I am not a huge fan of this, since when you have alpha it is hard to see the actual h/s/v you have chosen.

I would not do that as well.

&gt;  * Show a label next to the transparency slider to make it clear that it is for changing alpha
&gt;  * Show a text representation of currently selected color inside of the picker.  Note: this is currently happening in the actual value element that you are modifying, but it may be hard to see.

Yeah, that&apos;s what I meant. I now think you should mimic it inside the picker as well.

&gt; I don&apos;t have any problem dropping the close button, it really doesn&apos;t look very good - I just used an existing icon from the project.

Lets see if clicking away / pressing Esc or toggling swatch back would be sufficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507197</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-21 14:01:01 -0800</bug_when>
    <thetext>Attachment 115923 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/inspector/front-end/Spectrum.js:336:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/inspector/front-end/Spectrum.js:341:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/inspector/front-end/Spectrum.js:342:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/inspector/front-end/inspector.css:2675:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/inspector/front-end/inspector.css:2681:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 5 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507366</commentid>
    <comment_count>11</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2011-11-21 19:12:33 -0800</bug_when>
    <thetext>(In reply to comment #3)

I have finished most of this (and the UI) feedback, but am not sure how to proceed with the Color.js changes.

&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:82
&gt; &gt; +WebInspector.Spectrum.hsvToRgb = function(h, s, v, a) {
&gt; 
&gt; Seems like this could belong to Color.js
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:116
&gt; &gt; +WebInspector.Spectrum.rgbToHsv = function(r, g, b, a) {
&gt; 
&gt; ditto
&gt; 

I do agree that the Color class should probably have this functionality.  Since HSV colors aren&apos;t supported by the css parser it might be confusing if it worked in the web developer ui.  If someone copied an HSV into the value element, for instance, that could be confusing.

&gt; &gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1680
&gt; &gt; +                var rgba = (color.rgba || color.rgb).slice(0);
&gt; 
&gt; It sounds like Color class itself is broken. It should maintain single data entry for rgb / rgba.
&gt; 

I was a little leery of making changes to the color class since I didn&apos;t know of all the places it was used.  I didn&apos;t want to change the default behavior of return values for this patch to prevent messing up existing code.  I don&apos;t mind making this change, but I would want some guidance on where to look for problems.


Besides that, I have two issues I want to address before resubmitting a patch:

1. The big issue I am still seeing is that when I add a new property: value; string to an element.  When I open the colorpicker on that element, it seems like it is reinitializing the picker on a minor change event.  This might be because the initialization code is in the updateTitle function.  I have been trying to console.trace() or enter into the debugger to figure out what is going on, but haven&apos;t quite gotten it yet.  Any tips on why this might be happening?

2. Also, I want to attach the picker to the _parentPane instead of the valueElement, so that I can put labels inside of the picker (I can&apos;t leave it in the valueElement because other code uses valueElement.textContent to determine what CSS to apply).  For some reason, the self._parentPane is sometimes null in updateTitle, so I ended up checking this: 
if (self._parentPane) {
      // initialize colorpicker only if there is a parentPane
      var spectrum = new WebInspector.Spectrum(swatchElement, self._parentPane.bodyElement, rgba);
}
I&apos;m not sure why this code is being called on StylePropertyTreeElement objects that have a null _parentPane.  Again, any tips on why this might be and if what I am doing now should be fine?
  
You</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507516</commentid>
    <comment_count>12</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-11-22 04:33:04 -0800</bug_when>
    <thetext>One missing point in the patch is the ability to revert the change (e.g. on clicking outside of the picker, as opposed to the &quot;commit&quot; arrow-button).

Another thing that I noticed is that you create as many WebInspector.Spectrum instances (and its DOM replicas) as you have color swatches in the StylesSidebarPane. You should only have one instance of Spectrum (perhaps stored in the StylesSidebarPane instance) which will get attached to the proper swatch/property.

I also did not quite get the problem stated in the item 1 about adding a new property. A common rule is that only one field (property name/value) can be edited at any time. Could you give us an exact series of steps to reproduce the issue?

Your second problem is (at least partly) due to the fact that the ComputedStylePropertiesSection StylePropertyTreeElements are created with a null parentPane (see WebInspector.ComputedStylePropertiesSection.prototype.onpopulate). In fact, you should not worry about it, since bringing up a color picker for computed property values makes no sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507546</commentid>
    <comment_count>13</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2011-11-22 05:59:12 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; One missing point in the patch is the ability to revert the change (e.g. on clicking outside of the picker, as opposed to the &quot;commit&quot; arrow-button).
&gt; 

The commit arrow button has been removed based on initial UI feedback.  To me it feels like &quot;clicking out&quot; of the picker is a natural way to close *without* reverting.  We could either change that default behavior, add a cancel button or &apos;X&apos; in the top right corner to revert, or maybe make the new color text focused with after exiting with the ability to press escape to revert to the original value.  Not sure how hard that last one would be to implement.

&gt; I also did not quite get the problem stated in the item 1 about adding a new property. A common rule is that only one field (property name/value) can be edited at any time. Could you give us an exact series of steps to reproduce the issue?
&gt; 

Click on an element on the left pane like the body.  When it pulls up all of the styles on the right, you should be able to click on a color and use the picker as intended.  Now, double click into element.style and add a property, like &quot;background&quot;: &quot;red&quot;.  If you click on this new swatch that gets created and start dragging the colorpicker around, it disappears after a second (but your changes do get applied).  My guess is that it is calling the updateTitle function every time a minor change happens to a new property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507593</commentid>
    <comment_count>14</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-11-22 07:01:47 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; One missing point in the patch is the ability to revert the change (e.g. on clicking outside of the picker, as opposed to the &quot;commit&quot; arrow-button).
&gt; &gt; 
&gt; 
&gt; The commit arrow button has been removed based on initial UI feedback.  To me it feels like &quot;clicking out&quot; of the picker is a natural way to close *without* reverting.  We could either change that default behavior, add a cancel button or &apos;X&apos; in the top right corner to revert, or maybe make the new color text focused with after exiting with the ability to press escape to revert to the original value.  Not sure how hard that last one would be to implement.

Handling keys is not hard but I&apos;ll defer the final decision to Pavel who is also the primary UI advisor for Web Inspector.

&gt; &gt; I also did not quite get the problem stated in the item 1 about adding a new property. A common rule is that only one field (property name/value) can be edited at any time. Could you give us an exact series of steps to reproduce the issue?
&gt; &gt; 
&gt; 
&gt; Click on an element on the left pane like the body.  When it pulls up all of the styles on the right, you should be able to click on a color and use the picker as intended.  Now, double click into element.style and add a property, like &quot;background&quot;: &quot;red&quot;.  If you click on this new swatch that gets created and start dragging the colorpicker around, it disappears after a second (but your changes do get applied).  My guess is that it is calling the updateTitle function every time a minor change happens to a new property.

Oh, now I get your point. You don&apos;t need to edit a color before creating and editing one in element.style. Whenever you edit element.style, the &quot;style&quot; attribute for the inspected element gets invalidated, and all its styles get re-requested, thereby rebuilding the entire Styles pane (which, of course, blows away the color swatch and the spectrum element attached to it). We&apos;ve got a flag defined on the StylesSidebarPane to avoid updates during style edits. Your related snippets should look similar to this (provided you implement necessary checks for self._parentPane during the setup phase):

...
function finishSpectrum(e) {
    swatchElement.ownerDocument.removeEventListener(&quot;click&quot;, finishSpectrum, false);
    spectrum.hide(e);
    delete self._parentPane._isEditingStyle;
}
...
if (isShown) {
    self._parentPane._isEditingStyle = true;
    swatchElement.ownerDocument.addEventListener(&quot;click&quot;, finishSpectrum, false);
}
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508152</commentid>
    <comment_count>15</comment_count>
      <attachid>116361</attachid>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2011-11-23 08:29:26 -0800</bug_when>
    <thetext>Created attachment 116361
Screenshot with updated patch running

Using popover.js, showing selected color and label</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508160</commentid>
    <comment_count>16</comment_count>
      <attachid>116365</attachid>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2011-11-23 08:36:55 -0800</bug_when>
    <thetext>Created attachment 116365
Patch with updates (see comments for details)

Updated commit for colorpicker functionality based on feedback from https://bugs.webkit.org/show_bug.cgi?id=71262.  Changes include: using only one colorpicker for the whole styles panel, UI improvements, working on element.style, native WebKit.Color within plugin, use webkit style for code, update project references, use popover instead of custom measurements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508278</commentid>
    <comment_count>17</comment_count>
      <attachid>116391</attachid>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2011-11-23 12:03:59 -0800</bug_when>
    <thetext>Created attachment 116391
Same as https://bug-71262-attachments.webkit.org/attachment.cgi?id=116365, but with latest master

Forgot to update master before creating the last patch.  This one fixes that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509138</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-25 06:23:25 -0800</bug_when>
    <thetext>Attachment 116391 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/inspector/front-end/Spectrum.js:317:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/inspector/front-end/Spectrum.js:318:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/inspector/front-end/inspector.css:2678:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 4 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509161</commentid>
    <comment_count>19</comment_count>
      <attachid>116391</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-11-25 07:27:32 -0800</bug_when>
    <thetext>Comment on attachment 116391
Same as https://bug-71262-attachments.webkit.org/attachment.cgi?id=116365, but with latest master

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

The change looks better with the previous comments addressed. A couple of general notes:
- try to make Spectrum a reusable component not directly tied to the Styles sidebar
- use &quot;===&quot; rather than &quot;==&quot; wherever possible
- don&apos;t use blank lines to separate opening and closing braces of method bodies
- clean up duplicate blank lines (you use them them very rarely in the code)
- if in doubt, use the same style as the surrounding code does, even if it&apos;s against the rules :)

&gt; Source/WebCore/ChangeLog:7
&gt; +        updated commit for colorpicker functionality based on feedback from https://bugs.webkit.org/show_bug.cgi?id=71262.  Changes include: using only one colorpicker for the whole styles panel, UI improvements, working on element.style, native WebKit.Color within plugin, use webkit style for code, update project references, use popover instead of custom measurements

The message usually starts with a capital letter and has line breaks at reasonable intervals (usually around 100-120 characters).

&gt; Source/WebCore/ChangeLog:9
&gt; +	Reviewed by NOBODY (OOPS!).

This should be aligned with the rest of text. Webkit uses only spaces not tabs.

&gt; Source/WebCore/inspector/front-end/Popover.js:102
&gt; +    

Inadvertent change

&gt; Source/WebCore/inspector/front-end/Popover.js:176
&gt; +        

ditto

&gt; Source/WebCore/inspector/front-end/Spectrum.js:22
&gt; +    alphaLabel.textContent = &quot;alpha: &quot;;

This should be i18n-ized using WebInspector.UIString() / localizedStrings.js

&gt; Source/WebCore/inspector/front-end/Spectrum.js:30
&gt; +    

extra blank line

&gt; Source/WebCore/inspector/front-end/Spectrum.js:31
&gt; +    var swatchClone = WebInspector.Spectrum.getSwatchElement();

In general, I&apos;d be wary of this ad-hoc solution, as we&apos;d like to make Spectrum a reusable component. What if it should be invoked on a button click and modify the contents of an edit box on change? Spectrum might inherit Object and dispatch events when changed and closed, and clients would add/remove listeners for these events.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:46
&gt; +    //container.appendChild(this._containerElement);

stray commented line

&gt; Source/WebCore/inspector/front-end/Spectrum.js:53
&gt; +        this._onchange();  

can _onchange() incorporate a this._updateUI() call?

&gt; Source/WebCore/inspector/front-end/Spectrum.js:84
&gt; +WebInspector.Spectrum.hsvToRgb = function(h, s, v, a) {

This should be &quot;hsvToRGB&quot; according to the webkit naming guidelines

&gt; Source/WebCore/inspector/front-end/Spectrum.js:118
&gt; +WebInspector.Spectrum.rgbToHsv = function(r, g, b, a) {

Ditto

&gt; Source/WebCore/inspector/front-end/Spectrum.js:128
&gt; +    s = max == 0 ? 0 : d / max;

Prefer &quot;===&quot; over &quot;==&quot; everywhere

&gt; Source/WebCore/inspector/front-end/Spectrum.js:153
&gt; +    onmove = onmove || function() { };

Pavel feels strongly against nested anonymous functions, you can define a named one above.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:158
&gt; +    var dragging = false;

You don&apos;t need to initialize these 4 locals here (dragging will be undefined which is equivalent of false in the inspector code most of the time).

&gt; Source/WebCore/inspector/front-end/Spectrum.js:171
&gt; +        e.returnValue = false;

We don&apos;t normally rely on non-standard properties, this must be a leftover from IE-compatible code. You also don&apos;t need the method presence checks above.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:177
&gt; +            var dragX = Math.max(0, Math.min(e.pageX - offset.left + scrollOffset.left, maxWidth));

Where does scrollOffset come from? It should be at least defined in the closure scope, or else it gets defined on the window object.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:185
&gt; +        var rightclick = (e.which) ? (e.which == 3) : (e.button == 2);

Webkit tends to use camelcased identifiers (&quot;rightClick&quot;)

&gt; Source/WebCore/inspector/front-end/Spectrum.js:188
&gt; +            if (onstart.apply(element, arguments) !== false) {

Try to avoid explicit boolean comparisons (see the WebKit coding guidelines)

&gt; Source/WebCore/inspector/front-end/Spectrum.js:226
&gt; +        if (rgba.length &lt; 4) {

One-line blocks do not have braces.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:237
&gt; +        if (rgb[3] == 1)

We use &quot;===&quot; wherever possible.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:243
&gt; +    get colorNoSatVal()

Webkit mostly avoids abbreviations (&quot;colorWithFullSaturation&quot;?)

&gt; Source/WebCore/inspector/front-end/Spectrum.js:251
&gt; +    

extra blank line?

&gt; Source/WebCore/inspector/front-end/Spectrum.js:257
&gt; +    _isShown: false,

No need to explicitly define this. Historically, we either compute such properties in getters or create them when they turn &quot;true&quot; and delete (using the &quot;delete&quot; operator) when they turn &quot;false&quot;.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:262
&gt; +    

extra blank line?

&gt; Source/WebCore/inspector/front-end/Spectrum.js:265
&gt; +

Web Inspector does not separate opening and closing braces for a function with blank lines.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:285
&gt; +        // Where to show the bar that displays your current selected hue

Period at the end.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:289
&gt; +        

extra blank line?

&gt; Source/WebCore/inspector/front-end/Spectrum.js:298
&gt; +        if (rgb.length &lt; 4)

can it be, for example, 2? If applicable, check for &quot;=== 3&quot;.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:301
&gt; +        var rgbNoSatVal = this.colorNoSatVal.rgb;

Please avoid abbreviations if possible

&gt; Source/WebCore/inspector/front-end/Spectrum.js:318
&gt; +		return this._isShown;

odd indent

&gt; Source/WebCore/inspector/front-end/Spectrum.js:340
&gt; +        

extra blank line?

&gt; Source/WebCore/inspector/front-end/Spectrum.js:353
&gt; +        

extra blank line?

&gt; Source/WebCore/inspector/front-end/Spectrum.js:355
&gt; +        // existing event listeners

Period at the end.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1668
&gt; +                

extra blank lines

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1672
&gt; +                    // Alt + click toggles color formats

Comments should be full sentences followed by periods.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1673
&gt; +                    // Click opens colorpicker, only if the element is not in computed styles section)

A closing parenthesis instead of a period.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1677
&gt; +                    }

&quot;else if&quot; should be found on this line

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1690
&gt; +

ditto

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1758
&gt; +                

inadvertent change?

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1774
&gt; +                

ditto

&gt; Source/WebCore/inspector/front-end/inspector.css:2669
&gt; +    position:absolute; 

The CSS property format everywhere is:
property: value;

&gt; Source/WebCore/inspector/front-end/inspector.css:2680
&gt; +.spectrum-top {

separate all rules with blank lines

&gt; Source/WebCore/inspector/front-end/inspector.css:2681
&gt; +  position:relative; 

odd indentation

&gt; Source/WebCore/inspector/front-end/inspector.css:2686
&gt; +   position:absolute; top:0; left:0; bottom:0; right:0;

odd indentation.

Also, please don&apos;t use more than one property per line.

&gt; Source/WebCore/inspector/front-end/inspector.css:2690
&gt; +    top:0;left:0;bottom:0;right:20%;

One property per line

&gt; Source/WebCore/inspector/front-end/inspector.css:2694
&gt; +    top:0;right:0;bottom:0;left:83%;

ditto

&gt; Source/WebCore/inspector/front-end/inspector.css:2697
&gt; +    margin-top: 80%;  /* Same as spectrum-color width */

you can have a common class for the elements that should have margin-top: 80%

&gt; Source/WebCore/inspector/front-end/utilities.js:286
&gt; +    var totalLeft = totalTop = 0;

One declaration per line.

&gt; Source/WebCore/inspector/front-end/utilities.js:296
&gt; +    var curleft = curtop = 0;

Webkit uses one declaration per line, and camelcased variable identifiers (also, |left| and |top| would do just fine here).

&gt; Source/WebCore/inspector/front-end/utilities.js:298
&gt; +    if (el.offsetParent) {

Is this really consistent? I.e., the loop does not run if |this| has no offsetParent but will run for some of |this|&apos;s offsetParent-ancestors having no offsetParent.
Or do you mean that BODY has no offsetParent but can have scrollLeft/Top? 
If so, please add a comment to clarify this, otherwise the following snippet could be reused:

while (el.offsetParent) {
    curLeft += el.scrollLeft;
    curTop += el.scrollTop;
    el = el.offsetParent;
}

&gt; Source/WebCore/inspector/front-end/utilities.js:325
&gt; + 

Odd change

&gt; Source/WebCore/inspector/front-end/utilities.js:907
&gt; +

extra blank line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509508</commentid>
    <comment_count>20</comment_count>
      <attachid>116686</attachid>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2011-11-27 16:36:52 -0800</bug_when>
    <thetext>Created attachment 116686
Updating whitespace / webkit style

This handles most of the feedback from my latest patch.  I realize there isn&apos;t a changelog entry here.  I am having a hard time generating a changelog from multiple git commits, and am not able to easily rebase now that I have merged from master.  Any tips for handling this?  I basically want to generate a changelog based on 3 or so commits, separated by multiple merged commits if that makes sense.  Here is the output when I try to generate the changelog (my last commit was reverting the latest changelog):

Tools/Scripts/prepare-ChangeLog --git-commit HEAD --bug 71262
   Running status to find changed, added, or removed files.
   No changes found.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509615</commentid>
    <comment_count>21</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-11-28 00:08:03 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Created an attachment (id=116686) [details]
&gt; Updating whitespace / webkit style
&gt; 
&gt; This handles most of the feedback from my latest patch.  I realize there isn&apos;t a changelog entry here.  I am having a hard time generating a changelog from multiple git commits, and am not able to easily rebase now that I have merged from master.  Any tips for handling this?  I basically want to generate a changelog based on 3 or so commits, separated by multiple merged commits if that makes sense.  Here is the output when I try to generate the changelog (my last commit was reverting the latest changelog):
&gt; 
&gt; Tools/Scripts/prepare-ChangeLog --git-commit HEAD --bug 71262
&gt;    Running status to find changed, added, or removed files.
&gt;    No changes found.

Well, I usually do &quot;git rebase master&quot; instead of &quot;git merge master&quot;, since rebasing is what you most likely want to do, that is, apply your current changes on top of the current master state, instead of the reverse (applying your latest master on top of you changes). Actually, &quot;git merge&quot; is intended for the opposite task, according to &quot;git help merge&quot;: apply your development branch changes to the master branch (since it modifies the commits from the branch merged).

In situations like yours (branch goofed up), I usually run &quot;git diff master &gt; work.patch&quot;, branch off of master (e.g. git checkout -b topic master) and apply work.patch against the &quot;topic&quot; working copy: patch -p1 -F3 &lt; work.patch (-F3 handles ChangeLog merges if you are having problems with them, but may ruin your source code merges if the code you have changed also got changed in &quot;master&quot; - use with care.) Then commit and &quot;git show &gt; colorpicker.patch&quot; (you have the only commit after &quot;master&quot; in your &quot;topic&quot; branch now.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509631</commentid>
    <comment_count>22</comment_count>
      <attachid>116686</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-11-28 01:02:09 -0800</bug_when>
    <thetext>Comment on attachment 116686
Updating whitespace / webkit style

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

Thanks for addressing the comments, this is getting much closer to the webkit-ish code! Since I&apos;m not a reviewer, we&apos;ll need some of those (pfeldman@chromium.org and yurys@chromium.org are the closest ones) to run the final check some time soon.

&gt; Source/WebCore/inspector/front-end/Color.js:46
&gt; +WebInspector.Color.fromRGB = function(r, g, b)

blank line above

&gt; Source/WebCore/inspector/front-end/Popover.js:52
&gt; +    if (hideOverflow) {

No braces necessary for one-line if-blocks

&gt; Source/WebCore/inspector/front-end/Popover.js:-163
&gt; -

Inadvertent change

&gt; Source/WebCore/inspector/front-end/Spectrum.js:29
&gt; +WebInspector.Spectrum = function(container)

Annotating your new object for the Closure compiler is a good thing to do once you have fixed other issues (see other files in the &quot;front-end&quot; directory and http://code.google.com/closure/compiler/docs/js-for-compiler.html)

&gt; Source/WebCore/inspector/front-end/Spectrum.js:59
&gt; +    swatchElement.createChild(&quot;span&quot;, &quot;swatch-inner&quot;);

Please combine the two lines into one (querySelectorAll is generally expensive and is unnecessary here):

this._swatchInnerElement = swatchElement.createChild(&quot;span&quot;, &quot;swatch-inner&quot;);

&gt; Source/WebCore/inspector/front-end/Spectrum.js:142
&gt; +    s = max === 0 ? 0 : d / max;

Is the case of &quot;-0&quot; possible here? Also, a better version is &quot;s = max ? d / max : 0&quot; since comparisons to NULL, false, and 0 are disapproved and allowed only to resolve ambiguities (http://www.webkit.org/coding/coding-style.html, &quot;Null, false and 0&quot;).

&gt; Source/WebCore/inspector/front-end/Spectrum.js:190
&gt; +                onmove.apply(element, [dragX, dragY]); 

It is not a good idea to pass an arbitrary &quot;this&quot; to a client callback, since it may be a bound function having its own &quot;this&quot;. Sorry for overlooking this. A better option is just &quot;onmove(element, [dragX, dragY]);&quot;.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:196
&gt; +        var rightClick = (e.which) ? (e.which === 3) : (e.button === 2);

The parentheses around e.which are not required.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:201
&gt; +                onstart.apply(element, arguments)

A better option is just &quot;onstart(element, e);&quot;.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:219
&gt; +    function stop() 

You should declare the Event (&quot;e&quot;) argument...

&gt; Source/WebCore/inspector/front-end/Spectrum.js:228
&gt; +                onstop.apply(element, arguments); 

...and use it as &quot;onstop(element, e);&quot;.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:251
&gt; +        var round = [Math.round(rgb[0]), Math.round(rgb[1]), Math.round(rgb[2]), rgb[3]];

Should hsvToRGB handle the rounding as well? I can&apos;t think of an RGB color using floats as its components.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:254
&gt; +            return WebInspector.Color.fromRGB.apply(this, round);

Why do you need &quot;apply&quot; if this is a &quot;static&quot; method? Just &quot;return WebInspector.Color.fromRGB(round);&quot; would do here.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:256
&gt; +        return WebInspector.Color.fromRGBA.apply(this, round);

ditto

&gt; Source/WebCore/inspector/front-end/Spectrum.js:264
&gt; +        return WebInspector.Color.fromRGBA.apply(this, round);

ditto

&gt; Source/WebCore/inspector/front-end/Spectrum.js:302
&gt; +        

extra blank line

&gt; Source/WebCore/inspector/front-end/Spectrum.js:352
&gt; +        

extra blank line

&gt; Source/WebCore/inspector/front-end/Spectrum.js:364
&gt; +        

ditto

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:-1584
&gt; -

Inadvertent change

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1650
&gt; +                swatchInnerElement.style.setProperty(&quot;background-color&quot;, text);

Web Inspector typically uses ...style.backgroundColor = text;

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1660
&gt; +                    swatchInnerElement.style.setProperty(&quot;background-color&quot;, colorString);

ditto

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1671
&gt; +                

extra blank line

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1677
&gt; +                    if (e.altKey) {

No braces necessary for if (e.altKey). We also tend to check for other modifiers not being active.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1760
&gt; +                

Inadvertent change

&gt; Source/WebCore/inspector/front-end/inspector.css:2708
&gt; +    top:0; 

spaces after colons

&gt; Source/WebCore/inspector/front-end/inspector.css:2753
&gt; +   border: solid black 3px;

a typical format in the inspector CSS is &quot;3px solid #000&quot; (historically, there were only rgb&apos;s, so it would have been ...rgb (0, 0, 0))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509883</commentid>
    <comment_count>23</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2011-11-28 09:25:36 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt; Source/WebCore/inspector/front-end/inspector.css:2753
&gt; &gt; +   border: solid black 3px;
&gt; 
&gt; a typical format in the inspector CSS is &quot;3px solid #000&quot; (historically, there were only rgb&apos;s, so it would have been ...rgb (0, 0, 0))

We prefer using keywords for black/white.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510029</commentid>
    <comment_count>24</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2011-11-28 11:46:34 -0800</bug_when>
    <thetext>Thanks for replying to this.  I am already on a topic branch, not sure if that was clear or not.  I understand what you are saying about making a new branch and applying a patch to get a fresh state - I&apos;ll do that along with the other changes for the next patch.  

Being new to this project, I want to make sure I am doing this right.  I have been looking through all the docs I can find on contributing, but still have a couple questions about this (maybe I am just missing something):

1) Why can&apos;t I generate the changelog from multiple commits?  It seems silly that you have to squash all your commits into one for a changelog, since you don&apos;t have to do that for a patch.  I like to do small commits so I can see related changes together, and rebasing them together seems like counterproductive work to me.  Is there a way to just generate one from a patch?

2) When you do a branch like this, do you rebase into master every time you want to generate a patch?  What if you need to make changes to the patch based on feedback - do you revert the rebased commit, then rebase again, then generate the ChangeLog again, then do a patch?  What if I have updated from origin/master in the meantime and had to resolve conflicts - do you have to do that every time also?  Maybe I am just misunderstanding what you meant by this.

(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; Created an attachment (id=116686) [details] [details]
&gt; &gt; Updating whitespace / webkit style
&gt; &gt; 
&gt; &gt; This handles most of the feedback from my latest patch.  I realize there isn&apos;t a changelog entry here.  I am having a hard time generating a changelog from multiple git commits, and am not able to easily rebase now that I have merged from master.  Any tips for handling this?  I basically want to generate a changelog based on 3 or so commits, separated by multiple merged commits if that makes sense.  Here is the output when I try to generate the changelog (my last commit was reverting the latest changelog):
&gt; &gt; 
&gt; &gt; Tools/Scripts/prepare-ChangeLog --git-commit HEAD --bug 71262
&gt; &gt;    Running status to find changed, added, or removed files.
&gt; &gt;    No changes found.
&gt; 
&gt; Well, I usually do &quot;git rebase master&quot; instead of &quot;git merge master&quot;, since rebasing is what you most likely want to do, that is, apply your current changes on top of the current master state, instead of the reverse (applying your latest master on top of you changes). Actually, &quot;git merge&quot; is intended for the opposite task, according to &quot;git help merge&quot;: apply your development branch changes to the master branch (since it modifies the commits from the branch merged).
&gt; 
&gt; In situations like yours (branch goofed up), I usually run &quot;git diff master &gt; work.patch&quot;, branch off of master (e.g. git checkout -b topic master) and apply work.patch against the &quot;topic&quot; working copy: patch -p1 -F3 &lt; work.patch (-F3 handles ChangeLog merges if you are having problems with them, but may ruin your source code merges if the code you have changed also got changed in &quot;master&quot; - use with care.) Then commit and &quot;git show &gt; colorpicker.patch&quot; (you have the only commit after &quot;master&quot; in your &quot;topic&quot; branch now.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510030</commentid>
    <comment_count>25</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2011-11-28 11:47:29 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; &gt; Source/WebCore/inspector/front-end/inspector.css:2753
&gt; &gt; &gt; +   border: solid black 3px;
&gt; &gt; 
&gt; &gt; a typical format in the inspector CSS is &quot;3px solid #000&quot; (historically, there were only rgb&apos;s, so it would have been ...rgb (0, 0, 0))
&gt; 
&gt; We prefer using keywords for black/white.

Alright, I will use black/white for now unless if I hear otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510077</commentid>
    <comment_count>26</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-11-28 12:35:36 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; Thanks for replying to this.  I am already on a topic branch, not sure if that was clear or not.  I understand what you are saying about making a new branch and applying a patch to get a fresh state - I&apos;ll do that along with the other changes for the next patch.  
&gt; 
&gt; Being new to this project, I want to make sure I am doing this right.  I have been looking through all the docs I can find on contributing, but still have a couple questions about this (maybe I am just missing something):
&gt; 
&gt; 1) Why can&apos;t I generate the changelog from multiple commits?  It seems silly that you have to squash all your commits into one for a changelog, since you don&apos;t have to do that for a patch.  I like to do small commits so I can see related changes together, and rebasing them together seems like counterproductive work to me.  Is there a way to just generate one from a patch?

I believe it&apos;s a limitation of prepare-ChangeLog - it was originally written for svn (which is the VCS for webkit). Eric Seidel is the webkit tool master who usually handles this kind of issues.

&gt; 2) When you do a branch like this, do you rebase into master every time you want to generate a patch?  What if you need to make changes to the patch based on feedback - do you revert the rebased commit, then rebase again, then generate the ChangeLog again, then do a patch?  What if I have updated from origin/master in the meantime and had to resolve conflicts - do you have to do that every time also?  Maybe I am just misunderstanding what you meant by this.

My workflow is close to the following:

Pull in the latest changes from the repo:
[master]
git pull
git svn rebase
git checkout topic

[topic]
git rebase master
...edit...
git commit / git commit --amend (I keep no more than one commit in the topic branch for the sake of prepare-ChangeLog)
(optionally goto begin)

Upload a patch:
Tools/Scripts/prepare-ChangeLog -g HEAD --bug=&lt;bug_number&gt;
...edit ChangeLogs...
git commit -a --amend
Tools/Scripts/webkit-patch upload

Hope this helps.

And sorry for the confusion about the colors: I don&apos;t remember when I used keywordish colors last :)

&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; Created an attachment (id=116686) [details] [details] [details]
&gt; &gt; &gt; Updating whitespace / webkit style
&gt; &gt; &gt; 
&gt; &gt; &gt; This handles most of the feedback from my latest patch.  I realize there isn&apos;t a changelog entry here.  I am having a hard time generating a changelog from multiple git commits, and am not able to easily rebase now that I have merged from master.  Any tips for handling this?  I basically want to generate a changelog based on 3 or so commits, separated by multiple merged commits if that makes sense.  Here is the output when I try to generate the changelog (my last commit was reverting the latest changelog):
&gt; &gt; &gt; 
&gt; &gt; &gt; Tools/Scripts/prepare-ChangeLog --git-commit HEAD --bug 71262
&gt; &gt; &gt;    Running status to find changed, added, or removed files.
&gt; &gt; &gt;    No changes found.
&gt; &gt; 
&gt; &gt; Well, I usually do &quot;git rebase master&quot; instead of &quot;git merge master&quot;, since rebasing is what you most likely want to do, that is, apply your current changes on top of the current master state, instead of the reverse (applying your latest master on top of you changes). Actually, &quot;git merge&quot; is intended for the opposite task, according to &quot;git help merge&quot;: apply your development branch changes to the master branch (since it modifies the commits from the branch merged).
&gt; &gt; 
&gt; &gt; In situations like yours (branch goofed up), I usually run &quot;git diff master &gt; work.patch&quot;, branch off of master (e.g. git checkout -b topic master) and apply work.patch against the &quot;topic&quot; working copy: patch -p1 -F3 &lt; work.patch (-F3 handles ChangeLog merges if you are having problems with them, but may ruin your source code merges if the code you have changed also got changed in &quot;master&quot; - use with care.) Then commit and &quot;git show &gt; colorpicker.patch&quot; (you have the only commit after &quot;master&quot; in your &quot;topic&quot; branch now.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511283</commentid>
    <comment_count>27</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2011-11-29 18:24:43 -0800</bug_when>
    <thetext>&gt; 
&gt; My workflow is close to the following:
&gt; 
&gt; Pull in the latest changes from the repo:
&gt; [master]
&gt; git pull
&gt; git svn rebase
&gt; git checkout topic
&gt; 
&gt; [topic]
&gt; git rebase master
&gt; ...edit...
&gt; git commit / git commit --amend (I keep no more than one commit in the topic branch for the sake of prepare-ChangeLog)
&gt; (optionally goto begin)
&gt; 
&gt; Upload a patch:
&gt; Tools/Scripts/prepare-ChangeLog -g HEAD --bug=&lt;bug_number&gt;
&gt; ...edit ChangeLogs...
&gt; git commit -a --amend
&gt; Tools/Scripts/webkit-patch upload
&gt; 
&gt; Hope this helps.

Thanks!
This workflow makes a lot more sense.  Would love to see this documented somewhere, since it would have saved some time (and errant patches) getting into the project.  Anyway, I have a patch ready with *most* of the issues you have brought up taken care of.  I can work on adding the closure compiler annotations, etc while making any changes requested by a reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511287</commentid>
    <comment_count>28</comment_count>
      <attachid>117092</attachid>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2011-11-29 18:27:58 -0800</bug_when>
    <thetext>Created attachment 117092
Latest patch cleaned up based on feedback

Web Inspector: Add colorpicker functionality to color swatches in Styles Sidebar
This makes it easier to pick styles, and opens up some possibilities for neat color based
features in the future (for example: selecting from a &apos;pallet&apos; of colors found in the CSS).
https://bugs.webkit.org/show_bug.cgi?id=71262</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517405</commentid>
    <comment_count>29</comment_count>
      <attachid>117092</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-08 07:34:13 -0800</bug_when>
    <thetext>Comment on attachment 117092
Latest patch cleaned up based on feedback

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

Overall the code looks good, I&apos;ll defer it to a real reviewer to comment on more subtle issues.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:49
&gt; +    alphaLabel.textContent = WebInspector.UIString(&quot;alpha&quot;) + &quot;: &quot;;

add to English.lproj/localizedStrings.js

&gt; Source/WebCore/inspector/front-end/Spectrum.js:64
&gt; +    colorLabel.textContent = WebInspector.UIString(&quot;color&quot;) + &quot;: &quot;;

add to English.lproj/localizedStrings.js

&gt; Source/WebCore/inspector/front-end/Spectrum.js:359
&gt; +        

extra blank line

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1644
&gt; +                    swatchElement.title = WebInspector.UIString(&quot;Click to open a colorpicker&quot;);

add to English.lproj/localizedStrings.js

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1677
&gt; +                    if (e.altKey) {

Remove braces for the one-line block.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1695
&gt; +                    var format;

optional: While we are here, you can remove this var altogether and simply return the required value from every alternative (that way you&apos;ll have to remove &quot;else&quot; in &quot;else if&quot;, so that they will look like
if (.....)
    return cf.something;
if (.....)
    return cf.someOtherThing;
...

&gt; Source/WebCore/inspector/front-end/inspector.css:2681
&gt; +  position: relative; 

bad indentation for the 3 properties. Make sure you always use 4 spaces, not [a mixture of spaces and] tabs

&gt; Source/WebCore/inspector/front-end/inspector.css:2750
&gt; +   border-radius: 5px; 

bad indentation for all properties in the rule</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520990</commentid>
    <comment_count>30</comment_count>
      <attachid>119233</attachid>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2011-12-14 09:23:15 -0800</bug_when>
    <thetext>Created attachment 119233
Patch to provide colorpicker functionality inside of the styles sidebar for the web inspector frontend

Latest patch, ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521765</commentid>
    <comment_count>31</comment_count>
      <attachid>119233</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-15 02:23:42 -0800</bug_when>
    <thetext>Comment on attachment 119233
Patch to provide colorpicker functionality inside of the styles sidebar for the web inspector frontend

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

Thanks for working on this. It looks like we are almost ready to get it landed. I&apos;d suggest that we do it in steps:
1) land utility changes
2) land the Spectrum component
3) start using it behind the flag

Steps (1) and (3) need separate bugs filed.

&gt; Source/WebCore/inspector/front-end/Popover.js:35
&gt; +WebInspector.Popover = function(popoverHelper, appendElement, hideOverflow)

appendElement does not looks like a good name to me and I don&apos;t think it belongs to the popover constructor. I&apos;d call it parentElement and would pass it into show method. More importantly, you should land this as a separate change since it seems universal.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:95
&gt; +    this.hideProxy = this.hide.bind(this);

This seems to be private to this js file -&gt; rename to this._hideProxy.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:98
&gt; +WebInspector.Spectrum.hsvToRGB = function(h, s, v, a) {

{ should be on the new line

&gt; Source/WebCore/inspector/front-end/Spectrum.js:131
&gt; +WebInspector.Spectrum.rgbToHSV = function(r, g, b, a) {

ditto

&gt; Source/WebCore/inspector/front-end/Spectrum.js:146
&gt; +    else {

should be
} else {

&gt; Source/WebCore/inspector/front-end/Spectrum.js:163
&gt; +WebInspector.Spectrum.draggable = function(element, onmove, onstart, onstop) {

I think I was suggesting to use WebInspector.elementDragStart earlier. I think I missed your comment on that, did it prove not to be applicable to your case?

&gt; Source/WebCore/inspector/front-end/Spectrum.js:276
&gt; +    _updateHelperLocations: function() {

{ on the new line

&gt; Source/WebCore/inspector/front-end/Spectrum.js:288
&gt; +        );

We don&apos;t fomat closing ) like this, I&apos;d do:
dragX = Math.max(-this._dragHelperElementHeight, 
                 Math.min(this.dragWidth - this._dragHelperElementHeight, dragX - this._dragHelperElementHeight));

&gt; Source/WebCore/inspector/front-end/Spectrum.js:303
&gt; +    _updateUI: function() {

{ on the new line

&gt; Source/WebCore/inspector/front-end/Spectrum.js:322
&gt; +    toggle: function(element, color) {

ditto

&gt; Source/WebCore/inspector/front-end/Spectrum.js:331
&gt; +    show: function(element, color) {

ditto

&gt; Source/WebCore/inspector/front-end/Spectrum.js:351
&gt; +    hide: function() {

ditto

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:92
&gt; +    this._spectrum = new WebInspector.Spectrum(this.bodyElement);

I think you should land the spectrum first and then enable it in a separate change. You could also hide its use behind the Preferences.useSpectrum flag first (see Settings.js).

&gt; Source/WebCore/inspector/front-end/inspector.css:2668
&gt; +.spectrum-container { 

fyi, no need to fix now: we might want to load this CSS lazily via using the View infrastructure.

&gt; Source/WebCore/inspector/front-end/utilities.js:284
&gt; +Element.prototype.totalOffset = function(parent) 

Changes to the Color, Element prototype could also land as a separate change. Do you mind filing separate bugs and extracting the patches for them? I would allow us landing the spectrum faster.

&gt; Source/WebCore/inspector/front-end/utilities.js:902
&gt; +function stopPropagation(e) {

ditto, should be landed along with the element prototype changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528618</commentid>
    <comment_count>32</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2012-01-02 18:03:51 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; Thanks for working on this. It looks like we are almost ready to get it landed. I&apos;d suggest that we do it in steps:
&gt; 1) land utility changes
&gt; 2) land the Spectrum component
&gt; 3) start using it behind the flag

&gt; Steps (1) and (3) need separate bugs filed.

I have opened a bug for item (1) here: https://bugs.webkit.org/show_bug.cgi?id=75454.
I will attach a patch for (2 / 3) in this case, with a flag in Settings.js.

&gt; I think I was suggesting to use WebInspector.elementDragStart earlier. I think I missed your comment on that, did it prove not to be applicable to your case?

I tried to make it work and didn&apos;t have much success right away.  I&apos;m sure it could be made to work, but since the current implementation seemed to work fine I just left it as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528620</commentid>
    <comment_count>33</comment_count>
      <attachid>120904</attachid>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2012-01-02 18:09:59 -0800</bug_when>
    <thetext>Created attachment 120904
Add colorpicker functionality to color swatches in Styles Sidebar.

Depends on: https://bugs.webkit.org/show_bug.cgi?id=75454</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529443</commentid>
    <comment_count>34</comment_count>
      <attachid>120904</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-01-04 03:46:53 -0800</bug_when>
    <thetext>Comment on attachment 120904
Add colorpicker functionality to color swatches in Styles Sidebar.

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

This looks mostly Ok. Let me apply it to see if it behaves consistently with the rest of the app.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:31
&gt; +    this._popover = new WebInspector.Popover(null, true);

First parameter is marked as optional, not nullable, so you should pass &quot;undefined&quot; instead.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:99
&gt; +WebInspector.Spectrum.hsvToRGB = function(h, s, v, a) 

WebInspector.Spectrum.hsvaToRGBA ?

&gt; Source/WebCore/inspector/front-end/Spectrum.js:133
&gt; +WebInspector.Spectrum.rgbToHSV = function(r, g, b, a) 

ditto

&gt; Source/WebCore/inspector/front-end/Spectrum.js:165
&gt; +WebInspector.Spectrum.draggable = function(element, onmove, onstart, onstop) {

I still think it is worth extra effort to make it work with WebInspector.elementDragStart. I am fine with landing this method for now since you change is up for review for so long. Please add //FIXME: migrate to WebInspector.elementDragStart above this line.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:254
&gt; +            return WebInspector.Color.fromRGB(round[0], round[1], round[2], round[3]);

WebInspector.Color.fromRGB receives only 3 arguments.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:261
&gt; +        var rgb = WebInspector.Spectrum.hsvToRGB(this.hsv[0], 1, 1);

WebInspector.Spectrum.hsvToRGB expects 4 parameters.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1609
&gt; +                var spectrum = hasColorpicker &amp;&amp; self._parentPane._spectrum;

Prefer hasColorpicker ? self._parentPane._spectrum : null</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529449</commentid>
    <comment_count>35</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-01-04 04:05:34 -0800</bug_when>
    <thetext>Couple of things I noticed at runtime:

1. Popover positioning is broken:
- Console is drawn above the popover
- When there is insufficient amount of space, popover is still drawn either above or below the anchor, while it should be drawn to the right (or even over) the anchor to prevent the box clipping.

2. Color picker does not respect the chosen color format: when user chooses hsla, changing the value in the picker resets it back to rgb.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547078</commentid>
    <comment_count>36</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-01 07:37:49 -0800</bug_when>
    <thetext>Brian, we haven&apos;t heard from you for a while on this issue. Do you have an intention to continue your work on the feature or should we fix the problems in your patch and land it ourselves? In the latter case, would you give your permission for us to do so, naturally sharing the credit with you in the ChangeLog?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547165</commentid>
    <comment_count>37</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2012-02-01 10:17:30 -0800</bug_when>
    <thetext>I actually got a chance to work on it more this week after being off of it for a couple.  I changed the popover positioning (which actually means there are no changes to Popover.js anymore).  In fact, I almost resubmitted the patch this weekend but did because of these two main issues left:
1. Now that the popover can overflow, when you scroll down to the bottom then try to drag around the picker, the dragging doesn&apos;t work (the &apos;y&apos; value is off because of the scroll).
2. &quot;Color picker does not respect the chosen color format: when user chooses hsla, changing the value in the picker resets it back to rgb&quot;.  This issue is actually pretty tricky to fix because of the way WebInspector.Color and the sidebar pane function together.  I am still in the debugging stage of this problem.

I can work out at least item 1 and resubmit it.  Maybe one of you would have better luck with 2?  I have tried a few different things as far as passing in the original format to WebInspector.Color.toString() but nothing seems to work just right.

(In reply to comment #36)
&gt; Brian, we haven&apos;t heard from you for a while on this issue. Do you have an intention to continue your work on the feature or should we fix the problems in your patch and land it ourselves? In the latter case, would you give your permission for us to do so, naturally sharing the credit with you in the ChangeLog?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547549</commentid>
    <comment_count>38</comment_count>
      <attachid>125058</attachid>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2012-02-01 18:17:52 -0800</bug_when>
    <thetext>Created attachment 125058
Add colorpicker functionality to color swatches in Styles Sidebar - Using native popover and keeping original color format

Reverted popover changes, incorporating other feedback from comments.
Should now be keeping the initial color format when possible.  NOTE: I know when you alt+click to switch formats it works while dragging but reverts back to the old format when finished.  I can&apos;t figure out exactly why this is happening (something to do with a major applyStyleText).  I went ahead and sent it through even with this issue b/c it is relatively minor and just to keep the dialog going (since there seems to be UI feedback still coming through).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553035</commentid>
    <comment_count>39</comment_count>
      <attachid>125058</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-09 03:55:02 -0800</bug_when>
    <thetext>Comment on attachment 125058
Add colorpicker functionality to color swatches in Styles Sidebar - Using native popover and keeping original color format

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

Make sure all strings you pass into WebInspector.UIString(..) are present in Source/WebCore/English.lproj/localizedStrings.js (it is in UTF-16).

&gt; Source/WebCore/ChangeLog:1
&gt; +2012-02-01  bgrins  &lt;briangrinstead@gmail.com&gt;

A real name will look nice here (http://trac.webkit.org/wiki/UsingGitWithWebKit#WebKitScriptsupportforGit has a good description of the git setup process for WebKit development)

&gt; Source/WebCore/inspector/front-end/Spectrum.js:98
&gt; +WebInspector.Spectrum.hsvToRGBA = function(h, s, v, a) 

hsvaToRGBA?

&gt; Source/WebCore/inspector/front-end/Spectrum.js:132
&gt; +WebInspector.Spectrum.rgbToHSVA = function(r, g, b, a) 

rgbaToHSVA?

&gt; Source/WebCore/inspector/front-end/Spectrum.js:138
&gt; +    var max = Math.max(r, g, b), min = Math.min(r, g, b);

One variable per line

&gt; Source/WebCore/inspector/front-end/Spectrum.js:254
&gt; +        if (rgb[3] === 1) {

Please remove braces around single-line blocks

&gt; Source/WebCore/inspector/front-end/Spectrum.js:257
&gt; +        else {

ditto

&gt; Source/WebCore/inspector/front-end/Spectrum.js:291
&gt; +        var round = [Math.round(rgb[0]), Math.round(rgb[1]), Math.round(rgb[2]), rgb[3]];

Rounding of the RGB values can be extracted into a separate method, since you do exactly the same in the &quot;get color()&quot; above.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:306
&gt; +    

a lonely extra blank line :)

&gt; Source/WebCore/inspector/front-end/Spectrum.js:398
&gt; +        this.dispatchEventToListeners(&quot;hide&quot;, this.color);

Typically we define something along the lines of

WebInspector.Spectrum.Events = {
    ColorChanged: &quot;ColorChanged&quot;,
    Hidden: &quot;Hidden&quot;
}

(using the participle instead of infinitive) - see CSSStyleModel.js for an example.

Also, the Hidden event doesn&apos;t seem to need the color as the payload, since the updated color has been dispatched earlier in ColorChanged (and it&apos;s a good idea to dispatch the default initial color when the picker has just been opened.)

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1644
&gt; +                    self.applyStyleText(nameElement.textContent + &quot;: &quot; + valueElement.textContent, true, true, false);

The user seems to be unable to cancel colorpicking (e.g. using Esc)?

&gt; Source/WebCore/inspector/front-end/inspector.css:2690
&gt; +.spectrum-sat, .spectrum-val, .spectrum-top-inner { 

Instead of these separate classes, you can use the .fill class on respective elements, defined at the top of inspector.css. This will at least slightly help the size of our giant CSS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553755</commentid>
    <comment_count>40</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2012-02-09 19:45:59 -0800</bug_when>
    <thetext>(In reply to comment #39)
&gt; (From update of attachment 125058 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125058&amp;action=review
&gt; 
&gt; Make sure all strings you pass into WebInspector.UIString(..) are present in Source/WebCore/English.lproj/localizedStrings.js (it is in UTF-16).

Done

&gt; &gt; Source/WebCore/ChangeLog:1
&gt; &gt; +2012-02-01  bgrins  &lt;briangrinstead@gmail.com&gt;
&gt; 
&gt; A real name will look nice here (http://trac.webkit.org/wiki/UsingGitWithWebKit#WebKitScriptsupportforGit has a good description of the git setup process for WebKit development)

Done

&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:98
&gt; &gt; +WebInspector.Spectrum.hsvToRGBA = function(h, s, v, a) 
&gt; 
&gt; hsvaToRGBA?
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:132
&gt; &gt; +WebInspector.Spectrum.rgbToHSVA = function(r, g, b, a) 
&gt; 
&gt; rgbaToHSVA?
&gt;

Done

&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:138
&gt; &gt; +    var max = Math.max(r, g, b), min = Math.min(r, g, b);
&gt; 
&gt; One variable per line
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:254
&gt; &gt; +        if (rgb[3] === 1) {
&gt; 

Done

&gt; Please remove braces around single-line blocks
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:257
&gt; &gt; +        else {
&gt; 
&gt; ditto
&gt; 

Done

&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:291
&gt; &gt; +        var round = [Math.round(rgb[0]), Math.round(rgb[1]), Math.round(rgb[2]), rgb[3]];
&gt; 
&gt; Rounding of the RGB values can be extracted into a separate method, since you do exactly the same in the &quot;get color()&quot; above.
&gt; 

Moved to Spectrum.hsvaToRGBA

&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:306
&gt; &gt; +    
&gt; 
&gt; a lonely extra blank line :)
&gt; 

Ugh... finally fixed the setting on my text editor that was causing all of those problems with indenting new lines.  This lonely one was just from user error.

&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:398
&gt; &gt; +        this.dispatchEventToListeners(&quot;hide&quot;, this.color);
&gt; 
&gt; Typically we define something along the lines of
&gt; 
&gt; WebInspector.Spectrum.Events = {
&gt;     ColorChanged: &quot;ColorChanged&quot;,
&gt;     Hidden: &quot;Hidden&quot;
&gt; }
&gt; 
&gt; (using the participle instead of infinitive) - see CSSStyleModel.js for an example.
&gt; 
&gt; Also, the Hidden event doesn&apos;t seem to need the color as the payload, since the updated color has been dispatched earlier in ColorChanged (and it&apos;s a good idea to dispatch the default initial color when the picker has just been opened.)
&gt; 

Done

&gt; &gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1644
&gt; &gt; +                    self.applyStyleText(nameElement.textContent + &quot;: &quot; + valueElement.textContent, true, true, false);
&gt; 
&gt; The user seems to be unable to cancel colorpicking (e.g. using Esc)?
&gt; 

Should &apos;escape&apos; close the picker in the current state or revert back to the original color from when it opened?

&gt; &gt; Source/WebCore/inspector/front-end/inspector.css:2690
&gt; &gt; +.spectrum-sat, .spectrum-val, .spectrum-top-inner { 
&gt; 
&gt; Instead of these separate classes, you can use the .fill class on respective elements, defined at the top of inspector.css. This will at least slightly help the size of our giant CSS.

Ah, good catch... fixed that too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553760</commentid>
    <comment_count>41</comment_count>
      <attachid>126438</attachid>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2012-02-09 19:50:33 -0800</bug_when>
    <thetext>Created attachment 126438
Patch to provide colorpicker functionality inside of the styles sidebar for the web inspector frontend

Patch based on feedback from Alexander Pavlov</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553856</commentid>
    <comment_count>42</comment_count>
      <attachid>126438</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-09 22:48:41 -0800</bug_when>
    <thetext>Comment on attachment 126438
Patch to provide colorpicker functionality inside of the styles sidebar for the web inspector frontend

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

The patch looks good in general. My only concern is that you cannot cancel the colorpicker (without applying the selected color to the current property.) Please fix the nits and let us play around with it to see if there are any critical issues that should definitely be fixed before landing.

&gt; Source/WebCore/inspector/front-end/Spectrum.js:282
&gt; +            // Everything except HSL(A) should returned as RGBA if transparency is involved.

typo: ...should be returned...

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1667
&gt; +                             spectrum.addEventListener(WebInspector.Spectrum.Events.ColorChanged, spectrumChange);

Shouldn&apos;t we remove the listeners when the spectrum gets hidden?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553958</commentid>
    <comment_count>43</comment_count>
      <attachid>126438</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-10 02:06:20 -0800</bug_when>
    <thetext>Comment on attachment 126438
Patch to provide colorpicker functionality inside of the styles sidebar for the web inspector frontend

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

We&apos;d really appreciate it if you could remove a number of trailing spaces in inspector.css, Spectrum.js, and StylesSidebarPane.js (perhaps using one of the tools available out there or just by a regex replacement in Eclipse.)

&gt; Source/WebCore/WebCore.vcproj/WebCore.vcproj:72076
&gt; +					RelativePath=&quot;..\inspector\front-end\Spectrum.js&quot;

Please also rebase your patch on the current tip of tree, this merged poorly with &quot;patch -F3&quot; for me, so this won&apos;t land properly with the commit-queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554002</commentid>
    <comment_count>44</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-10 03:48:42 -0800</bug_when>
    <thetext>Runtime thoughts :)

First and foremost: the picker will be a magnitude more usable if clicking (mousedown) in the two colored areas will move the dragger/slider to the click point, like the alpha slider (&lt;input type=&quot;range&quot;&gt;) does.

This style can make the dragger look a lot better in dark areas of the spectrum:
.spectrum-dragger {
  border-radius: 5px;
  height: 5px;
  width: 5px;
  border: 1px solid white;
  cursor: pointer;
  position: absolute;
  top: 0;
  left: 0;
  background: black;
}

Also &quot;-webkit-user-select: none&quot; would be useful on &quot;spectrum-container&quot;, since click-dragging the alpha slider may inadvertently result in selecting the &quot;alpha: &quot; label (or some other text nearby) if you miss the slider active area (which was the case with me.)

The strings &quot;alpha: &quot;, &quot;color: &quot;, and &quot;Click to open a colorpicker&quot; are not present in localizedStrings.js (this file is considered binary by the VCS&apos;s, so you will need to manually re-add them every time it changes in the HEAD).

It would be awesome if there were a way to cancel the colorpicking. Also, Pavel might have some concerns regarding the compatibility with his recent Undo feature (at the very least, we can deal with it in a subsequent patch.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554209</commentid>
    <comment_count>45</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2012-02-10 10:53:52 -0800</bug_when>
    <thetext>(In reply to comment #44)
&gt; Runtime thoughts :)
&gt; 
&gt; First and foremost: the picker will be a magnitude more usable if clicking (mousedown) in the two colored areas will move the dragger/slider to the click point, like the alpha slider (&lt;input type=&quot;range&quot;&gt;) does.
&gt; 

Good point, added this in.

&gt; This style can make the dragger look a lot better in dark areas of the spectrum:
&gt; .spectrum-dragger {
&gt;   border-radius: 5px;
&gt;   height: 5px;
&gt;   width: 5px;
&gt;   border: 1px solid white;
&gt;   cursor: pointer;
&gt;   position: absolute;
&gt;   top: 0;
&gt;   left: 0;
&gt;   background: black;
&gt; }
&gt; 

Done 

&gt; Also &quot;-webkit-user-select: none&quot; would be useful on &quot;spectrum-container&quot;, since click-dragging the alpha slider may inadvertently result in selecting the &quot;alpha: &quot; label (or some other text nearby) if you miss the slider active area (which was the case with me.)
&gt; 

Done

&gt; The strings &quot;alpha: &quot;, &quot;color: &quot;, and &quot;Click to open a colorpicker&quot; are not present in localizedStrings.js (this file is considered binary by the VCS&apos;s, so you will need to manually re-add them every time it changes in the HEAD).
&gt; 

When I change this file, I just see &apos;Binary files differ&apos; in the patch... So I&apos;m not sure how to include these changes in the patch.  How do you typically get these changes landed?

&gt; It would be awesome if there were a way to cancel the colorpicking. Also, Pavel might have some concerns regarding the compatibility with his recent Undo feature (at the very least, we can deal with it in a subsequent patch.)

I wonder if the &apos;cancel&apos; functionality should be put in place with this?  Not sure if we would have to change to code to make it compatible with undo.  I don&apos;t have a problem adding in a cancel button or &apos;escape&apos; support, but I want to make sure it would be accepted before putting the time into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554211</commentid>
    <comment_count>46</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2012-02-10 10:54:26 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; (From update of attachment 126438 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126438&amp;action=review
&gt; 
&gt; We&apos;d really appreciate it if you could remove a number of trailing spaces in inspector.css, Spectrum.js, and StylesSidebarPane.js (perhaps using one of the tools available out there or just by a regex replacement in Eclipse.)
&gt; 

Done

&gt; &gt; Source/WebCore/WebCore.vcproj/WebCore.vcproj:72076
&gt; &gt; +					RelativePath=&quot;..\inspector\front-end\Spectrum.js&quot;
&gt; 
&gt; Please also rebase your patch on the current tip of tree, this merged poorly with &quot;patch -F3&quot; for me, so this won&apos;t land properly with the commit-queue.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554213</commentid>
    <comment_count>47</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2012-02-10 10:55:48 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; (From update of attachment 126438 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126438&amp;action=review
&gt; 
&gt; The patch looks good in general. My only concern is that you cannot cancel the colorpicker (without applying the selected color to the current property.) Please fix the nits and let us play around with it to see if there are any critical issues that should definitely be fixed before landing.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:282
&gt; &gt; +            // Everything except HSL(A) should returned as RGBA if transparency is involved.
&gt; 
&gt; typo: ...should be returned...
&gt; 

Is it just me or are these the same string?
returned
returned

There could be a typo in there, maybe I just have a blind eye to it :)

&gt; &gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1667
&gt; &gt; +                             spectrum.addEventListener(WebInspector.Spectrum.Events.ColorChanged, spectrumChange);
&gt; 
&gt; Shouldn&apos;t we remove the listeners when the spectrum gets hidden?

Good point, done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554260</commentid>
    <comment_count>48</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2012-02-10 11:51:01 -0800</bug_when>
    <thetext>
&gt; &gt; &gt; Source/WebCore/inspector/front-end/Spectrum.js:282
&gt; &gt; &gt; +            // Everything except HSL(A) should returned as RGBA if transparency is involved.
&gt; &gt; 
&gt; &gt; typo: ...should be returned...
&gt; &gt; 
&gt; 
&gt; Is it just me or are these the same string?


Haha, I finally see what you are talking about.  Wow, that took a while for me to see for some reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555115</commentid>
    <comment_count>49</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-13 01:31:52 -0800</bug_when>
    <thetext>Brian, we believe you have addressed the comments, but we cannot see the patch! :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555247</commentid>
    <comment_count>50</comment_count>
      <attachid>126769</attachid>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2012-02-13 07:29:03 -0800</bug_when>
    <thetext>Created attachment 126769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555249</commentid>
    <comment_count>51</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2012-02-13 07:31:59 -0800</bug_when>
    <thetext>Ah, I used webkit-patch upload and that fixed my issue with the binary diff on localizedStrings.js.  Hopefully everything else went through correctly using this method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557177</commentid>
    <comment_count>52</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-15 05:18:22 -0800</bug_when>
    <thetext>Committed r107804: &lt;http://trac.webkit.org/changeset/107804&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557199</commentid>
    <comment_count>53</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2012-02-15 05:56:51 -0800</bug_when>
    <thetext>(In reply to comment #52)
&gt; Committed r107804: &lt;http://trac.webkit.org/changeset/107804&gt;

Great, is there anything else I should do for this?  Cancel, undo, and keeping in sync with alt+click changed formats have all been mentioned.  I think cancel and undo are going to be pretty closely tied together, and I don&apos;t yet know anything about the undo feature but I&apos;m willing to follow this patch up with whatever changes are needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557215</commentid>
    <comment_count>54</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-15 06:14:35 -0800</bug_when>
    <thetext>(In reply to comment #53)
&gt; (In reply to comment #52)
&gt; &gt; Committed r107804: &lt;http://trac.webkit.org/changeset/107804&gt;
&gt; 
&gt; Great, is there anything else I should do for this?  Cancel, undo, and keeping in sync with alt+click changed formats have all been mentioned.  I think cancel and undo are going to be pretty closely tied together, and I don&apos;t yet know anything about the undo feature but I&apos;m willing to follow this patch up with whatever changes are needed.

I just landed a followup http://trac.webkit.org/changeset/107810 that deals with the compilability and our best practices, but canceling the color selection is a most welcome feature! Pavel also wanted that hundred-line third-level spectrum-related chunk inside StylesSidebarPane#processColor() to be extracted to the top level.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115923</attachid>
            <date>2011-11-18 19:01:28 -0800</date>
            <delta_ts>2011-11-23 08:36:55 -0800</delta_ts>
            <desc>First attempted patch.  Hopefully have included everything correctly</desc>
            <filename>colorpicker.patch</filename>
            <type>text/plain</type>
            <size>24579</size>
            <attacher name="Brian Grinstead">briangrinstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ZTFhNGFmLi5kN2IzNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIg
QEAKKzIwMTEtMTEtMTggIGJncmlucyAgPGJyaWFuZ3JpbnN0ZWFkQGdtYWlsLmNvbT4KKworICAg
ICAgICBmaXJzdCBjb21taXQgZm9yIGNvbG9ycGlja2VyIGZ1bmN0aW9uYWxpdHkKKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBBZGQgY29sb3JwaWNrZXIgZnVuY3Rpb25hbGl0eSB0byBjb2xvciBz
d2F0Y2hlcyBpbiBTdHlsZXMgU2lkZWJhcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzEyNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvQ29sb3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29sb3IuZnJv
bVJHQik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TcGVjdHJ1bS5qczogQWRkZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uaHVlRHJhZyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3BlY3RydW0uY29sb3JEcmFnKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVj
dHJ1bS5hbHBoYURyYWcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5oc3ZUb1JnYik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU3BlY3RydW0ucmdiVG9Ic3YpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnN0
b3BQcm9wYWdhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uYWRkRXZlbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnJlbW92ZUV2ZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5nZXRPZmZzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNwZWN0cnVtLmdldFNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3Ry
dW0uZHJhZ2dhYmxlLm9uc3RhcnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmRy
YWdnYWJsZS5vbnN0b3ApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmRyYWdnYWJs
ZS52YXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmRyYWdnYWJsZS5wcmV2ZW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUubW92ZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxlLnN0YXJ0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUuc3RvcCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU3BlY3RydW0uZHJhZ2dhYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5w
cm90b3R5cGUuc2V0IHJnYik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90
eXBlLmdldCByZ2IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS5n
ZXQgcmdiTm9TYXRWYWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlw
ZS5vbmNoYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLl9v
bmNoYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLnVwZGF0
ZUhlbHBlckxvY2F0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90
eXBlLnVwZGF0ZVVJKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUu
dG9nZ2xlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuc2hvdyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLmhpZGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS5fb25oaWRlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuYWRkQ2hhbmdlTGlzdGVuZXIpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS5hZGRIaWRlTGlzdGVuZXIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS51cGRhdGVU
aXRsZS4pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzczoKKyAg
ICAgICAgKC5zcC1jb250YWluZXIpOgorICAgICAgICAoLnNwLWNvbnRhaW5lci5zcC1mbGF0KToK
KyAgICAgICAgKC5zcC1jb250YWluZXIuc3Atc2hvdyk6CisgICAgICAgICguc3AtdG9wKToKKyAg
ICAgICAgKC5zcC10b3AtaW5uZXIpOgorICAgICAgICAoLnNwLWNvbG9yKToKKyAgICAgICAgKC5z
cC1odWUpOgorICAgICAgICAoLnNwLWZpbGwpOgorICAgICAgICAoLnNwLXNhdCwgLnNwLXZhbCk6
CisgICAgICAgICguc3AtcmFuZ2UtY29udGFpbmVyKToKKyAgICAgICAgKC5zcC1yYW5nZS1jb250
YWluZXIgaW5wdXQpOgorICAgICAgICAoLnNwLXJhbmdlLWNvbnRhaW5lciBkaXYpOgorICAgICAg
ICAoLnN3YXRjaC1pbm5lcik6CisgICAgICAgICguc3dhdGNoLCAuc3AtZHJhZ2dlciwgLnNwLXNs
aWRlcik6CisgICAgICAgICguc3Atc2F0KToKKyAgICAgICAgKC5zcC12YWwpOgorICAgICAgICAo
LnNwLWRyYWdnZXIpOgorICAgICAgICAoLnNwLXNsaWRlcik6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKwogMjAxMS0xMS0wOSAgU2ltb24gSGF1c21hbm4g
IDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkLCBh
ZGRpbmcgbWlzc2luZyBmaWxlcyB0byB0aGUgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Db2xvci5qcwppbmRleCA2MjU4OGRmLi41ZmMyODQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanMKQEAgLTQzLDYgKzQzLDEwIEBA
IFdlYkluc3BlY3Rvci5Db2xvci5mcm9tUkdCQSA9IGZ1bmN0aW9uKHIsIGcsIGIsIGEpCiB7CiAg
ICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29sb3IoInJnYmEoIiArIHIgKyAiLCIgKyBnICsg
IiwiICsgYiArICIsIiArICh0eXBlb2YgYSA9PT0gInVuZGVmaW5lZCIgPyAxIDogYSkgKyAiKSIp
OwogfQorV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0IgPSBmdW5jdGlvbihyLCBnLCBiKQorewor
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yKCJyZ2IoIiArIHIgKyAiLCIgKyBnICsg
IiwiICsgYiArICIpIik7Cit9CiAKIFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUgPSB7CiAg
ICAgZ2V0IHNob3J0aGV4KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU3BlY3RydW0uanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NwZWN0cnVtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNjhhY2EK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nw
ZWN0cnVtLmpzCkBAIC0wLDAgKzEsMzk0IEBACisKK1dlYkluc3BlY3Rvci5TcGVjdHJ1bSA9IGZ1
bmN0aW9uKHN3YXRjaCwgcmdiKQoreworICAgIHRoaXMuZG9jdW1lbnQgPSBzd2F0Y2gub3duZXJE
b2N1bWVudDsKKyAgICB0aGlzLnN3YXRjaCA9IHN3YXRjaDsKKyAgICB0aGlzLmVsZW1lbnQgPSB0
aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRoaXMuZWxlbWVudC5jbGFz
c05hbWUgPSAic3AtY29udGFpbmVyIjsKKyAgICB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MID0gV2Vi
SW5zcGVjdG9yLlNwZWN0cnVtLm1hcmt1cDsKKyAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCBXZWJJbnNwZWN0b3IuU3BlY3RydW0uc3RvcFByb3BhZ2F0aW9uLCBmYWxz
ZSk7CisgICAgCisgICAgdGhpcy5zd2F0Y2hJbm5lciA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc3BhbicpOworICAgIHRoaXMuc3dhdGNoSW5uZXIuY2xhc3NOYW1lID0gJ3N3YXRjaC1p
bm5lcic7CisgICAgdGhpcy5zd2F0Y2guYXBwZW5kQ2hpbGQodGhpcy5zd2F0Y2hJbm5lcik7Cisg
ICAgdGhpcy5zd2F0Y2gucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIHRoaXMuZWxlbWVudCwgc3dh
dGNoLm5leHRTaWJsaW5nICk7CisgICAgCisgICAgdGhpcy5zbGlkZXIgPSB0aGlzLmVsZW1lbnQu
cXVlcnlTZWxlY3RvckFsbCgiLnNwLWh1ZSIpWzBdOworICAgIHRoaXMuc2xpZGVIZWxwZXIgPSB0
aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnNwLXNsaWRlciIpWzBdOworICAgIHRoaXMu
ZHJhZ2dlciA9IHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuc3AtY29sb3IiKVswXTsK
KyAgICB0aGlzLmRyYWdIZWxwZXIgPSB0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnNw
LWRyYWdnZXIiKVswXTsKKyAgICB0aGlzLnJhbmdlU2xpZGVyID0gdGhpcy5lbGVtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoIi5zcC1yYW5nZSIpWzBdOworICAgIHRoaXMuYnV0dG9uID0gdGhpcy5lbGVt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5zcC1yYW5nZS1jb250YWluZXIgZGl2IilbMF07CisgICAg
CisgICAgV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmRyYWdnYWJsZSh0aGlzLnNsaWRlciwgaHVlRHJh
Zy5iaW5kKHRoaXMpKTsKKyAgICBXZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxlKHRoaXMu
ZHJhZ2dlciwgY29sb3JEcmFnLmJpbmQodGhpcykpOworICAgIAorICAgIHRoaXMucmFuZ2VTbGlk
ZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgYWxwaGFEcmFnLmJpbmQodGhpcyksIGZhbHNl
KTsKKyAgICB0aGlzLmJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuaGlkZS5i
aW5kKHRoaXMpLCBmYWxzZSk7CisgICAgCisgICAgaWYgKHJnYikgeworICAgICAgICB0aGlzLnJn
YiA9IHJnYjsKKyAgICAgICAgdGhpcy51cGRhdGVVSSgpOworICAgIH0KKyAgICAKKyAgICBmdW5j
dGlvbiBodWVEcmFnKGRyYWdYLCBkcmFnWSkgCisgICAgeworICAgICAgICB0aGlzLmhzdlswXSA9
IChkcmFnWSAvIHRoaXMuc2xpZGVIZWlnaHQpOworICAgICAgICAKKyAgICAgICAgdGhpcy51cGRh
dGVVSSgpOworICAgICAgICB0aGlzLm9uY2hhbmdlKCk7ICAKKyAgICB9CisgICAgCisgICAgZnVu
Y3Rpb24gY29sb3JEcmFnKGRyYWdYLCBkcmFnWSkgCisgICAgeworICAgICAgICB0aGlzLmhzdlsx
XSA9IGRyYWdYIC8gdGhpcy5kcmFnV2lkdGg7CisgICAgICAgIHRoaXMuaHN2WzJdID0gKHRoaXMu
ZHJhZ0hlaWdodCAtIGRyYWdZKSAvIHRoaXMuZHJhZ0hlaWdodDsKKyAgICAgICAgCisgICAgICAg
IHRoaXMudXBkYXRlVUkoKTsKKyAgICAgICAgdGhpcy5vbmNoYW5nZSgpOworICAgIH0KKyAgICAK
KyAgICBmdW5jdGlvbiBhbHBoYURyYWcoKSAKKyAgICB7CisgICAgICAgIHRoaXMuaHN2WzNdID0g
dGhpcy5yYW5nZVNsaWRlci52YWx1ZSAvIDEwMDsKKyAgICAgICAgCisgICAgICAgIHRoaXMudXBk
YXRlVUkoKTsKKyAgICAgICAgdGhpcy5vbmNoYW5nZSgpOworICAgIH0KK30KKworV2ViSW5zcGVj
dG9yLlNwZWN0cnVtLm1hcmt1cCA9IFsKKyAgICAiPGRpdiBjbGFzcz0nc3AtdG9wJz4iLAorICAg
ICAgICAiPGRpdiBjbGFzcz0nc3AtZmlsbCc+PC9kaXY+IiwKKyAgICAgICAgIjxkaXYgY2xhc3M9
J3NwLXRvcC1pbm5lcic+IiwKKyAgICAgICAgICAgICI8ZGl2IGNsYXNzPSdzcC1jb2xvcic+IiwK
KyAgICAgICAgICAgICAgICAiPGRpdiBjbGFzcz0nc3Atc2F0Jz4iLAorICAgICAgICAgICAgICAg
ICAgICAiPGRpdiBjbGFzcz0nc3AtdmFsJz4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIjxk
aXYgY2xhc3M9J3NwLWRyYWdnZXInPjwvZGl2PiIsCisgICAgICAgICAgICAgICAgICAgICI8L2Rp
dj4iLAorICAgICAgICAgICAgICAgICI8L2Rpdj4iLAorICAgICAgICAgICAgIjwvZGl2PiIsCisg
ICAgICAgICAgICAiPGRpdiBjbGFzcz0nc3AtaHVlJz4iLAorICAgICAgICAgICAgICAgICI8ZGl2
IGNsYXNzPSdzcC1zbGlkZXInPjwvZGl2PiIsCisgICAgICAgICAgICAiPC9kaXY+IiwKKyAgICAg
ICAgIjwvZGl2PiIsCisgICAgIjwvZGl2PiIsCisgICAgIjxkaXYgY2xhc3M9J3NwLXJhbmdlLWNv
bnRhaW5lcic+IiwKKyAgICAgICAgIjxpbnB1dCB0eXBlPSdyYW5nZScgY2xhc3M9J3NwLXJhbmdl
JyBtaW49JzAnIG1heD0nMTAwJyAvPiIsCisgICAgICAgICI8ZGl2PjwvZGl2PiIsCisgICAgIjwv
ZGl2PiIKK10uam9pbignJyk7CisKK1dlYkluc3BlY3Rvci5TcGVjdHJ1bS5oc3ZUb1JnYiA9IGZ1
bmN0aW9uKGgsIHMsIHYsIGEpIHsKKworICAgIHZhciByLCBnLCBiOworICAgIAorICAgIHZhciBp
ID0gTWF0aC5mbG9vcihoICogNik7CisgICAgdmFyIGYgPSBoICogNiAtIGk7CisgICAgdmFyIHAg
PSB2ICogKDEgLSBzKTsKKyAgICB2YXIgcSA9IHYgKiAoMSAtIGYgKiBzKTsKKyAgICB2YXIgdCA9
IHYgKiAoMSAtICgxIC0gZikgKiBzKTsKKyAgICAKKyAgICBzd2l0Y2goaSAlIDYpIHsKKyAgICBj
YXNlIDA6IAorICAgICAgICByID0gdiwgZyA9IHQsIGIgPSBwOyAKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSAxOiAKKyAgICAgICAgciA9IHEsIGcgPSB2LCBiID0gcDsgCisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgMjogCisgICAgICAgIHIgPSBwLCBnID0gdiwgYiA9IHQ7IAorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIDM6IAorICAgICAgICByID0gcCwgZyA9IHEsIGIgPSB2OyAKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSA0OiAKKyAgICAgICAgciA9IHQsIGcgPSBwLCBiID0gdjsgCisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgNTogCisgICAgICAgIHIgPSB2LCBnID0gcCwgYiA9IHE7
IAorICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFtyICogMjU1LCBnICog
MjU1LCBiICogMjU1LCBhXTsKK307CisKK1dlYkluc3BlY3Rvci5TcGVjdHJ1bS5yZ2JUb0hzdiA9
IGZ1bmN0aW9uKHIsIGcsIGIsIGEpIHsKKworICAgIHIgPSByIC8gMjU1OworICAgIGcgPSBnIC8g
MjU1OworICAgIGIgPSBiIC8gMjU1OworICAgIAorICAgIHZhciBtYXggPSBNYXRoLm1heChyLCBn
LCBiKSwgbWluID0gTWF0aC5taW4ociwgZywgYik7CisgICAgdmFyIGgsIHMsIHYgPSBtYXg7CisK
KyAgICB2YXIgZCA9IG1heCAtIG1pbjsKKyAgICBzID0gbWF4ID09IDAgPyAwIDogZCAvIG1heDsK
KworICAgIGlmKG1heCA9PSBtaW4pIHsKKyAgICAgICAgLy8gYWNocm9tYXRpYworICAgICAgICBo
ID0gMDsgCisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzd2l0Y2gobWF4KSB7CisgICAgICAg
IGNhc2UgcjogCisgICAgICAgICAgICBoID0gKGcgLSBiKSAvIGQgKyAoZyA8IGIgPyA2IDogMCk7
IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgZzogCisgICAgICAgICAgICBoID0g
KGIgLSByKSAvIGQgKyAyOyAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGI6IAor
ICAgICAgICAgICAgaCA9IChyIC0gZykgLyBkICsgNDsgCisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBoIC89IDY7CisgICAgfQorICAgIHJldHVybiBbaCwgcywgdiwgYV07
Cit9OworCitXZWJJbnNwZWN0b3IuU3BlY3RydW0uc3RvcFByb3BhZ2F0aW9uID0gZnVuY3Rpb24o
ZSkgeworICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7Cit9OworCitXZWJJbnNwZWN0b3IuU3BlY3Ry
dW0uYWRkRXZlbnQgPSBmdW5jdGlvbiAoZWwsIG5hbWUsIGNiKSB7CisgICAgaWYgKHR5cGVvZiBu
YW1lID09PSAib2JqZWN0IikgeworICAgICAgICBmb3IgKHZhciBpIGluIG5hbWUpIHsKKyAgICAg
ICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoaSwgbmFtZVtpXSwgZmFsc2UpOyAKKyAgICAgICAg
fSAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIobmFt
ZSwgY2IsIGZhbHNlKTsgICAKKyAgICB9Cit9OworICAgIAorIFdlYkluc3BlY3Rvci5TcGVjdHJ1
bS5yZW1vdmVFdmVudCA9IGZ1bmN0aW9uKGVsLCBuYW1lLCBjYikgeworICAgIGlmICh0eXBlb2Yg
bmFtZSA9PT0gIm9iamVjdCIpIHsKKyAgICAgICAgZm9yICh2YXIgaSBpbiBuYW1lKSB7CisgICAg
ICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGksIG5hbWVbaV0sIGZhbHNlKTsgCisgICAg
ICAgIH0gICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3Rl
bmVyKG5hbWUsIGNiLCBmYWxzZSk7ICAgCisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLlNwZWN0
cnVtLmdldE9mZnNldCA9IGZ1bmN0aW9uKGVsKSB7CisgICAgcmV0dXJuIHsgbGVmdDogZWwudG90
YWxPZmZzZXRMZWZ0KCksIHRvcDogZWwudG90YWxPZmZzZXRUb3AoKSB9OworfTsKKworV2ViSW5z
cGVjdG9yLlNwZWN0cnVtLmdldFNjcm9sbE9mZnNldCA9IGZ1bmN0aW9uKGVsKSB7CisgICAgdmFy
IGN1cmxlZnQgPSBjdXJ0b3AgPSAwOworICAgIGlmIChlbC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgZG8geworICAgICAgICAgICAgY3VybGVmdCArPSBlbC5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgY3VydG9wICs9IGVsLnNjcm9sbFRvcDsKKyAgICAgICAgfSB3aGlsZSAoZWwgPSBlbC5vZmZz
ZXRQYXJlbnQpOworICAgIH0KKyAgICByZXR1cm4geyBsZWZ0OiBjdXJsZWZ0LCB0b3A6IGN1cnRv
cCB9OworfTsKKworV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmRyYWdnYWJsZSA9IGZ1bmN0aW9uKGVs
ZW1lbnQsIG9ubW92ZSwgb25zdGFydCwgb25zdG9wKSB7CisKKyAgICBvbm1vdmUgPSBvbm1vdmUg
fHwgZnVuY3Rpb24oKSB7IH07CisgICAgb25zdGFydCA9IG9uc3RhcnQgfHwgZnVuY3Rpb24oKSB7
IH07CisgICAgb25zdG9wID0gb25zdG9wIHx8IGZ1bmN0aW9uKCkgeyB9OworICAgIAorICAgIHZh
ciBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7CisgICAgdmFyIGRyYWdn
aW5nID0gZmFsc2U7CisgICAgdmFyIG9mZnNldCA9IHsgfTsKKyAgICB2YXIgbWF4SGVpZ2h0ID0g
MDsKKyAgICB2YXIgbWF4V2lkdGggPSAwOworICAgIAorICAgIHZhciBkdXJpbmdEcmFnRXZlbnRz
ID0geyB9OworICAgIGR1cmluZ0RyYWdFdmVudHNbInNlbGVjdHN0YXJ0Il0gPSBwcmV2ZW50Owor
ICAgIGR1cmluZ0RyYWdFdmVudHNbImRyYWdzdGFydCJdID0gcHJldmVudDsKKyAgICBkdXJpbmdE
cmFnRXZlbnRzWyJtb3VzZW1vdmUiXSA9IG1vdmU7CisgICAgZHVyaW5nRHJhZ0V2ZW50c1sibW91
c2V1cCJdID0gc3RvcDsKKworICAgIGZ1bmN0aW9uIHByZXZlbnQoZSkgCisgICAgeworICAgICAg
ICBpZiAoZS5zdG9wUHJvcGFnYXRpb24pCisgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigp
OworICAgICAgICAKKyAgICAgICAgaWYgKGUucHJldmVudERlZmF1bHQpCisgICAgICAgICAgICBl
LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICAKKyAgICAgICAgZS5yZXR1cm5WYWx1ZSA9
IGZhbHNlOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBtb3ZlKGUpIAorICAgIHsKKyAgICAg
ICAgaWYgKGRyYWdnaW5nKSB7CisgICAgICAgICAgICB2YXIgZHJhZ1ggPSBNYXRoLm1heCgwLCBN
YXRoLm1pbihlLnBhZ2VYIC0gb2Zmc2V0LmxlZnQgKyBzY3JvbGxPZmZzZXQubGVmdCwgbWF4V2lk
dGgpKTsKKyAgICAgICAgICAgIHZhciBkcmFnWSA9IE1hdGgubWF4KDAsIE1hdGgubWluKGUucGFn
ZVkgLSBvZmZzZXQudG9wICsgc2Nyb2xsT2Zmc2V0LnRvcCwgbWF4SGVpZ2h0KSk7CisgICAgICAg
ICAgICBvbm1vdmUuYXBwbHkoZWxlbWVudCwgW2RyYWdYLCBkcmFnWV0pOyAKKyAgICAgICAgfSAK
KyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gc3RhcnQoZSkgCisgICAgeyAKKyAgICAgICAgdmFy
IHJpZ2h0Y2xpY2sgPSAoZS53aGljaCkgPyAoZS53aGljaCA9PSAzKSA6IChlLmJ1dHRvbiA9PSAy
KTsKKyAgICAgICAgCisgICAgICAgIGlmICghcmlnaHRjbGljayAmJiAhZHJhZ2dpbmcpIHsgCisg
ICAgICAgICAgICBpZiAob25zdGFydC5hcHBseShlbGVtZW50LCBhcmd1bWVudHMpICE9PSBmYWxz
ZSkgeworICAgICAgICAgICAgICAgIGRyYWdnaW5nID0gdHJ1ZTsgCisgICAgICAgICAgICAgICAg
bWF4SGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICAgICAgbWF4V2lk
dGggPSBlbGVtZW50LmNsaWVudFdpZHRoOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIHNjcm9sbE9mZnNldCA9IFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5nZXRTY3JvbGxPZmZzZXQo
ZWxlbWVudCk7CisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gV2ViSW5zcGVjdG9yLlNwZWN0cnVt
LmdldE9mZnNldChlbGVtZW50KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuU3BlY3RydW0uYWRkRXZlbnQoZG9jLCBkdXJpbmdEcmFnRXZlbnRzKTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwcmV2ZW50KGUpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHN0b3AoKSAKKyAgICB7IAor
ICAgICAgICBpZiAoZHJhZ2dpbmcpIHsgCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuU3BlY3Ry
dW0ucmVtb3ZlRXZlbnQoZG9jLCBkdXJpbmdEcmFnRXZlbnRzKTsKKyAgICAgICAgICAgIG9uc3Rv
cC5hcHBseShlbGVtZW50LCBhcmd1bWVudHMpOyAKKyAgICAgICAgfQorICAgICAgICBkcmFnZ2lu
ZyA9IGZhbHNlOyAKKyAgICB9CisgICAgCisgICAgV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmFkZEV2
ZW50KGVsZW1lbnQsICJtb3VzZWRvd24iLCBzdGFydCk7Cit9OworCitXZWJJbnNwZWN0b3IuU3Bl
Y3RydW0ucHJvdG90eXBlID0geworICAgIHNldCByZ2IoY29sb3IpCisgICAgeworICAgICAgICBp
ZiAoY29sb3IubGVuZ3RoIDwgNCkgeworICAgICAgICAgICAgY29sb3JbM10gPSAxOworICAgICAg
ICB9CisgICAgICAgIHRoaXMuaHN2ID0gV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnJnYlRvSHN2KGNv
bG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0sIGNvbG9yWzNdKTsKKyAgICB9LAorCisgICAgZ2V0
IHJnYigpCisgICAgeworICAgICAgICB2YXIgcmdiID0gV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmhz
dlRvUmdiKHRoaXMuaHN2WzBdLCB0aGlzLmhzdlsxXSwgdGhpcy5oc3ZbMl0sIHRoaXMuaHN2WzNd
KTsKKyAgICAgICAgcmV0dXJuIFtNYXRoLnJvdW5kKHJnYlswXSksIE1hdGgucm91bmQocmdiWzFd
KSwgTWF0aC5yb3VuZChyZ2JbMl0pLCByZ2JbM11dOworICAgIH0sCisgICAgCisgICAgZ2V0IHJn
Yk5vU2F0VmFsKCkKKyAgICB7CisgICAgICAgIHZhciByZ2IgPSBXZWJJbnNwZWN0b3IuU3BlY3Ry
dW0uaHN2VG9SZ2IodGhpcy5oc3ZbMF0sIDEsIDEpOworICAgICAgICByZXR1cm4gW01hdGgucm91
bmQocmdiWzBdKSwgTWF0aC5yb3VuZChyZ2JbMV0pLCBNYXRoLnJvdW5kKHJnYlsyXSksIHJnYlsz
XV07CisgICAgfSwKKyAgICAKKyAgICBvbmNoYW5nZTogZnVuY3Rpb24oKSB7CisgICAgICAgIHRo
aXMuX29uY2hhbmdlKHRoaXMucmdiKTsKKyAgICB9LAorICAgIAorICAgIF9vbmNoYW5nZTogZnVu
Y3Rpb24oKSB7CisgICAgCisgICAgfSwKKyAgICAKKworICAgIHVwZGF0ZUhlbHBlckxvY2F0aW9u
czogZnVuY3Rpb24oKSB7CisKKyAgICAgICAgdmFyIGggPSB0aGlzLmhzdlswXTsKKyAgICAgICAg
dmFyIHMgPSB0aGlzLmhzdlsxXTsKKyAgICAgICAgdmFyIHYgPSB0aGlzLmhzdlsyXTsKKyAgICAg
ICAgCisgICAgICAgIC8vIFdoZXJlIHRvIHNob3cgdGhlIGxpdHRsZSBjaXJjbGUgaW4gdGhhdCBk
aXNwbGF5cyB5b3VyIGN1cnJlbnQgc2VsZWN0ZWQgY29sb3IKKyAgICAgICAgdmFyIGRyYWdYID0g
cyAqIHRoaXMuZHJhZ1dpZHRoOworICAgICAgICB2YXIgZHJhZ1kgPSB0aGlzLmRyYWdIZWlnaHQg
LSAodiAqIHRoaXMuZHJhZ0hlaWdodCk7CisgICAgICAgIAorICAgICAgICBkcmFnWCA9IE1hdGgu
bWF4KAorICAgICAgICAgICAgLXRoaXMuZHJhZ0hlbHBlckhlaWdodCwgCisgICAgICAgICAgICBN
YXRoLm1pbih0aGlzLmRyYWdXaWR0aCAtIHRoaXMuZHJhZ0hlbHBlckhlaWdodCwgZHJhZ1ggLSB0
aGlzLmRyYWdIZWxwZXJIZWlnaHQpCisgICAgICAgICk7CisgICAgICAgIGRyYWdZID0gTWF0aC5t
YXgoCisgICAgICAgICAgICAtdGhpcy5kcmFnSGVscGVySGVpZ2h0LCAKKyAgICAgICAgICAgIE1h
dGgubWluKHRoaXMuZHJhZ0hlaWdodCAtIHRoaXMuZHJhZ0hlbHBlckhlaWdodCwgZHJhZ1kgLSB0
aGlzLmRyYWdIZWxwZXJIZWlnaHQpCisgICAgICAgICk7CisgICAgICAgIAorICAgICAgICB0aGlz
LmRyYWdIZWxwZXIucG9zaXRpb25BdChkcmFnWCwgZHJhZ1kpOworICAgICAgICAKKyAgICAgICAg
Ly8gV2hlcmUgdG8gc2hvdyB0aGUgYmFyIHRoYXQgZGlzcGxheXMgeW91ciBjdXJyZW50IHNlbGVj
dGVkIGh1ZQorICAgICAgICB2YXIgc2xpZGVZID0gKGggKiB0aGlzLnNsaWRlSGVpZ2h0KSAtIHRo
aXMuc2xpZGVIZWxwZXJIZWlnaHQ7CisgICAgICAgIHRoaXMuc2xpZGVIZWxwZXIuc3R5bGUudG9w
ID0gc2xpZGVZICsgInB4IjsKKyAgICAgICAgCisgICAgICAgIAorICAgICAgICB0aGlzLnJhbmdl
U2xpZGVyLnZhbHVlID0gdGhpcy5oc3ZbM10gKiAxMDA7CisgICAgfSwKKyAgICAKKyAgICB1cGRh
dGVVSTogZnVuY3Rpb24oKSB7CisgICAgCisgICAgICAgIHRoaXMudXBkYXRlSGVscGVyTG9jYXRp
b25zKCk7CisgICAgICAgIAorICAgICAgICB2YXIgcmdiID0gdGhpcy5yZ2I7CisgICAgICAgIHZh
ciByZ2JOb1NhdFZhbCA9IHRoaXMucmdiTm9TYXRWYWw7CisgICAgICAgIAorICAgICAgICB2YXIg
ZmxhdENvbG9yID0gInJnYigiICsgcmdiTm9TYXRWYWxbMF0gKyAiLCAiICsgcmdiTm9TYXRWYWxb
MV0gKyAiLCAiICsgcmdiTm9TYXRWYWxbMl0gKyAiKSI7CisgICAgICAgIHZhciBmdWxsQ29sb3Ig
PSAicmdiYSgiICsgcmdiWzBdICsgIiwgIiArIHJnYlsxXSArICIsICIgKyByZ2JbMl0gKyAiLCAi
ICsgcmdiWzNdICsgIikiOworICAgICAgICAKKyAgICAgICAgdGhpcy5kcmFnZ2VyLnN0eWxlLmJh
Y2tncm91bmRDb2xvciA9IGZsYXRDb2xvcjsKKyAgICAgICAgdGhpcy5zd2F0Y2hJbm5lci5zdHls
ZS5iYWNrZ3JvdW5kQ29sb3IgPSBmdWxsQ29sb3I7CisgICAgICAgIAorICAgICAgICB0aGlzLnJh
bmdlU2xpZGVyLnZhbHVlID0gdGhpcy5oc3ZbM10gKiAxMDA7CisgICAgfSwKKyAgICAKKyAgICB0
b2dnbGU6IGZ1bmN0aW9uKGUpIHsKKwkJdmFyIGlzU2hvd24gPSB0aGlzLmVsZW1lbnQuaGFzU3R5
bGVDbGFzcygnc3Atc2hvdycpOworICAgICAgICBpZiAoaXNTaG93bikgCisgICAgICAgICAgICB0
aGlzLmhpZGUoZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuc2hvdyhlKTsKKwkJ
CisJCXJldHVybiAhaXNTaG93bjsKKyAgICB9LAorICAgIAorICAgIHNob3c6IGZ1bmN0aW9uKGUp
IHsKKyAgICAKKyAgICAgICAgaWYgKGUpIAorICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24o
KTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCdzcC1zaG93
Jyk7CisgICAgICAgIHRoaXMuc3dhdGNoLmFkZFN0eWxlQ2xhc3MoJ3N3YXRjaC1hY3RpdmUnKTsK
KyAgICAgICAgCisgICAgICAgIHZhciB4ID0gTWF0aC5taW4oCisgICAgICAgICAgICB0aGlzLnN3
YXRjaC5vZmZzZXRQYXJlbnQuY2xpZW50V2lkdGggLSB0aGlzLmVsZW1lbnQuY2xpZW50V2lkdGgg
LSAyMCwgCisgICAgICAgICAgICBNYXRoLm1heCgwLCB0aGlzLnN3YXRjaC5vZmZzZXRMZWZ0KQor
ICAgICAgICApOworICAgICAgICAKKyAgICAgICAgdmFyIHkgPSB0aGlzLnN3YXRjaC5vZmZzZXRU
b3AgKyB0aGlzLnN3YXRjaC5jbGllbnRIZWlnaHQ7CisgICAgICAgIAorICAgICAgICB0aGlzLmVs
ZW1lbnQucG9zaXRpb25BdCh4LCB5KTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuc2xpZGVIZWln
aHQgPSB0aGlzLnNsaWRlci5vZmZzZXRIZWlnaHQ7CisgICAgICAgIHRoaXMuZHJhZ1dpZHRoID0g
dGhpcy5kcmFnZ2VyLm9mZnNldFdpZHRoOworICAgICAgICB0aGlzLmRyYWdIZWlnaHQgPSB0aGlz
LmRyYWdnZXIub2Zmc2V0SGVpZ2h0OworICAgICAgICB0aGlzLmRyYWdIZWxwZXJIZWlnaHQgPSB0
aGlzLmRyYWdIZWxwZXIub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgdGhpcy5zbGlkZUhlbHBl
ckhlaWdodCA9IHRoaXMuc2xpZGVIZWxwZXIub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgCisg
ICAgICAgIHRoaXMudXBkYXRlVUkoKTsKKyAgICB9LAorICAgIAorICAgIGhpZGU6IGZ1bmN0aW9u
KGUpIHsKKyAgICAgICAgCisgICAgICAgIGlmIChlKSAKKyAgICAgICAgICAgIGUuc3RvcFByb3Bh
Z2F0aW9uKCk7CisgICAgICAgIAorICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlU3R5bGVDbGFz
cygnc3Atc2hvdycpOworICAgICAgICB0aGlzLnN3YXRjaC5yZW1vdmVTdHlsZUNsYXNzKCdzd2F0
Y2gtYWN0aXZlJyk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9vbmhpZGUodGhpcy5yZ2IpOwor
ICAgIH0sCisgICAgCisgICAgX29uaGlkZTogZnVuY3Rpb24oKSB7CisgICAgICAgIAorICAgIH0s
CisgICAgCisgICAgYWRkQ2hhbmdlTGlzdGVuZXI6IGZ1bmN0aW9uKGxpc3RlbmVyKSB7CisgICAg
ICAgIHRoaXMuX29uY2hhbmdlID0gbGlzdGVuZXI7CisgICAgfSwKKyAgICAKKyAgICBhZGRIaWRl
TGlzdGVuZXI6IGZ1bmN0aW9uKGxpc3RlbmVyKSB7CisgICAgICAgIHRoaXMuX29uaGlkZSA9IGxp
c3RlbmVyCisgICAgfQorICAgIAorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IDFjMzAxYmIuLmZkMTY0
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
U2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
dHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtMTU4NCwzMCArMTU4NCwzNiBAQCBXZWJJbnNwZWN0b3Iu
U3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB9
IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSh0ZXh0KTsKICAgICAgICAgICAgICAgICB9Ci0KKyAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICB2YXIgc3dhdGNoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InNwYW4iKTsKLSAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LnRpdGxlID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDbGljayB0byBjaGFuZ2UgY29sb3IgZm9ybWF0Iik7CisgICAgICAgICAg
ICAgICAgc3dhdGNoRWxlbWVudC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xpY2sg
dG8gb3BlbiBhIGNvbG9ycGlja2VyIik7CiAgICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5j
bGFzc05hbWUgPSAic3dhdGNoIjsKICAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LnN0eWxl
LnNldFByb3BlcnR5KCJiYWNrZ3JvdW5kLWNvbG9yIiwgdGV4dCk7CiAKLSAgICAgICAgICAgICAg
ICBzd2F0Y2hFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgY2hhbmdlQ29sb3JEaXNw
bGF5LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIHN3YXRjaENsaWNrLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgc3dhdGNo
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIGZ1bmN0aW9uKGV2ZW50KSB7IGV2
ZW50LnN0b3BQcm9wYWdhdGlvbigpIH0sIGZhbHNlKTsKLQotICAgICAgICAgICAgICAgIHZhciBm
b3JtYXQ7Ci0gICAgICAgICAgICAgICAgdmFyIGZvcm1hdFNldHRpbmcgPSBXZWJJbnNwZWN0b3Iu
c2V0dGluZ3MuY29sb3JGb3JtYXQuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGZvcm1hdFNl
dHRpbmcgPT09IGNmLk9yaWdpbmFsKQotICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSBjZi5P
cmlnaW5hbDsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChQcmVmZXJlbmNlcy5zaG93Q29sb3JO
aWNrbmFtZXMgJiYgY29sb3Iubmlja25hbWUpCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9
IGNmLk5pY2tuYW1lOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvcm1hdFNldHRpbmcgPT09
IGNmLlJHQikKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gKGNvbG9yLnNpbXBsZSA/IGNm
LlJHQiA6IGNmLlJHQkEpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvcm1hdFNldHRpbmcg
PT09IGNmLkhTTCkKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gKGNvbG9yLnNpbXBsZSA/
IGNmLkhTTCA6IGNmLkhTTEEpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbG9yLnNpbXBs
ZSkKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gKGNvbG9yLmhhc1Nob3J0SGV4KCkgPyBj
Zi5TaG9ydEhFWCA6IGNmLkhFWCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICBmb3JtYXQgPSBjZi5SR0JBOwotCisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgdmFyIGZvcm1hdCA9IGdldEZvcm1hdCgpOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uIGdldEZvcm1hdCgpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IGZvcm1hdDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGZvcm1hdFNldHRpbmcgPSBXZWJJbnNw
ZWN0b3Iuc2V0dGluZ3MuY29sb3JGb3JtYXQuZ2V0KCk7CisgICAgICAgICAgICAgICAgICAgIGlm
IChmb3JtYXRTZXR0aW5nID09PSBjZi5PcmlnaW5hbCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZvcm1hdCA9IGNmLk9yaWdpbmFsOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChQcmVm
ZXJlbmNlcy5zaG93Q29sb3JOaWNrbmFtZXMgJiYgY29sb3Iubmlja25hbWUpCisgICAgICAgICAg
ICAgICAgICAgICAgICBmb3JtYXQgPSBjZi5OaWNrbmFtZTsKKyAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoZm9ybWF0U2V0dGluZyA9PT0gY2YuUkdCKQorICAgICAgICAgICAgICAgICAgICAg
ICAgZm9ybWF0ID0gKGNvbG9yLnNpbXBsZSA/IGNmLlJHQiA6IGNmLlJHQkEpOworICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChmb3JtYXRTZXR0aW5nID09PSBjZi5IU0wpCisgICAgICAgICAg
ICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3Iuc2ltcGxlID8gY2YuSFNMIDogY2YuSFNMQSk7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbG9yLnNpbXBsZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZvcm1hdCA9IChjb2xvci5oYXNTaG9ydEhleCgpID8gY2YuU2hvcnRIRVgg
OiBjZi5IRVgpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICBmb3JtYXQgPSBjZi5SR0JBOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmb3JtYXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIHZhciBjb2xvclZhbHVlRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgICAgICAgICBjb2xvclZhbHVlRWxlbWVu
dC50ZXh0Q29udGVudCA9IGNvbG9yLnRvU3RyaW5nKGZvcm1hdCk7CiAKQEAgLTE2NTQsNiArMTY2
MCw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAogCiAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24gY2hhbmdlQ29sb3JEaXNwbGF5KGV2ZW50KQogICAgICAgICAgICAg
ICAgIHsKQEAgLTE2NjksNiArMTY3Niw1MiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0g
ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgICAgICAgICAgICAgIGNvbnRh
aW5lci5hcHBlbmRDaGlsZChzd2F0Y2hFbGVtZW50KTsKICAgICAgICAgICAgICAgICBjb250YWlu
ZXIuYXBwZW5kQ2hpbGQoY29sb3JWYWx1ZUVsZW1lbnQpOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIHZhciByZ2JhID0gKGNvbG9yLnJnYmEgfHwgY29sb3IucmdiKS5zbGljZSgw
KTsKKyAgICAgICAgICAgICAgICB2YXIgc3BlY3RydW0gPSBuZXcgV2ViSW5zcGVjdG9yLlNwZWN0
cnVtKHN3YXRjaEVsZW1lbnQsIHJnYmEpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIHNwZWN0cnVtLmFkZENoYW5nZUxpc3RlbmVyKHNwZWN0cnVtQ2hhbmdlKTsKKyAgICAgICAg
ICAgICAgICBzcGVjdHJ1bS5hZGRIaWRlTGlzdGVuZXIoYXBwbHlNYWpvckNoYW5nZSk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gc3BlY3RydW1DaGFuZ2Uocmdi
YSkgeworICAgICAgICAgICAgICAgICAgICBpZiAocmdiYVszXSA9PSAxKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5mcm9tUkdCLmFwcGx5KHRo
aXMsIHJnYmEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5m
cm9tUkdCQS5hcHBseSh0aGlzLCByZ2JhKQorICAgICAgICAgICAgICAgICAgICB9IAorICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgYXBwbHlNaW5vckNoYW5nZSgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmdW5j
dGlvbiBhcHBseU1pbm9yQ2hhbmdlKCkgeworICAgICAgICAgICAgICAgICAgICBjb2xvclZhbHVl
RWxlbWVudC50ZXh0Q29udGVudCA9IGNvbG9yLnRvU3RyaW5nKGdldEZvcm1hdCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5hcHBseVN0eWxlVGV4dChuYW1lRWxlbWVudC50ZXh0Q29udGVu
dCArICI6ICIgKyB2YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQsIGZhbHNlLCBmYWxzZSwgZmFsc2Up
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBhcHBseU1ham9y
Q2hhbmdlKCkgeworICAgICAgICAgICAgICAgICAgICBjb2xvclZhbHVlRWxlbWVudC50ZXh0Q29u
dGVudCA9IGNvbG9yLnRvU3RyaW5nKGdldEZvcm1hdCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5hcHBseVN0eWxlVGV4dChuYW1lRWxlbWVudC50ZXh0Q29udGVudCArICI6ICIgKyB2YWx1
ZUVsZW1lbnQudGV4dENvbnRlbnQsIHRydWUsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gZmluaXNoU3Bl
Y3RydW0oZSkgeworICAgICAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50Lm93bmVyRG9jdW1l
bnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmaW5pc2hTcGVjdHJ1bSwgZmFsc2UpOwor
ICAgICAgICAgICAgICAgICAgICBzcGVjdHJ1bS5oaWRlKGUpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBzd2F0Y2hDbGljayhl
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChlLmFsdEtleSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gYWx0ICsgY2xpY2sgdG9nZ2xlcyBmb3JtYXRzCisgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFuZ2VDb2xvckRpc3BsYXkoZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBl
LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgIHZhciBpc1Nob3duID0gc3BlY3Ry
dW0udG9nZ2xlKGUpOworICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTaG93bikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5vd25lckRvY3VtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgZmluaXNoU3BlY3RydW0sIGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHJldHVybiBjb250YWluZXI7CiAgICAg
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmNzcwppbmRleCAyZjM5MGI3Li43Y2RiNTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCkBAIC0yNjM2LDMgKzI2MzYsMTEx
IEBAIGJvZHkucGxhdGZvcm0tbWFjICNkcmF3ZXItc3RhdHVzLWJhciAuc2VhcmNoLXN0YXR1cy1i
YXItcHJvZ3Jlc3MgewogICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgYm9yZGVy
LXdpZHRoOiAwIDAgMTFweCAwOwogfQorCisKKy8qCitodHRwczovL2dpdGh1Yi5jb20vYmdyaW5z
L3NwZWN0cnVtCisqLworLnNwLWNvbnRhaW5lciB7IAorICAgIHBvc2l0aW9uOmFic29sdXRlOyAK
KyAgICB0b3A6MDsgCisgICAgbGVmdDowOyAKKwlkaXNwbGF5Om5vbmU7CisgICAgYmFja2dyb3Vu
ZDogcmdiYSgyMzAsIDIzMCwgMjMwLCAxKSAhaW1wb3J0YW50OworICAgIGJvcmRlcjoxcHggc29s
aWQgIzY0NjQ2NDsKKyAgICBib3JkZXItcmFkaXVzOjA7CisgICAgcGFkZGluZzogMTBweDsKKyAg
ICB3aWR0aDogMjAwcHg7CisJei1pbmRleDogMTA7Cit9Cisuc3AtY29udGFpbmVyLnNwLWZsYXQg
eworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKy5zcC1jb250YWluZXIuc3Atc2hvdyB7Cisg
ICAgZGlzcGxheTppbmxpbmUtYmxvY2s7Cit9Cisuc3AtdG9wIHsKKyAgcG9zaXRpb246cmVsYXRp
dmU7IAorICB3aWR0aDogMTAwJTsKKyAgZGlzcGxheTppbmxpbmUtYmxvY2s7Cit9Cisuc3AtdG9w
LWlubmVyIHsKKyAgIHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgbGVmdDowOyBib3R0b206MDsg
cmlnaHQ6MDsKK30KKy5zcC1jb2xvciB7IAorICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0
b3A6MDtsZWZ0OjA7Ym90dG9tOjA7cmlnaHQ6MjAlOworfQorLnNwLWh1ZSB7CisgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgIHRvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDo4MyU7Cit9Cisu
c3AtZmlsbCB7IAorICAgIG1hcmdpbi10b3A6IDgwJTsgIC8qIFNhbWUgYXMgc3AtY29sb3Igd2lk
dGggKi8KK30KKy5zcC1zYXQsIC5zcC12YWwgeyAKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7IAor
ICAgIHRvcDowOyAKKyAgICBsZWZ0OjA7IAorICAgIHJpZ2h0OjA7IAorICAgIGJvdHRvbTowOyAK
K30KKworLnNwLXJhbmdlLWNvbnRhaW5lciB7CisgICAgcG9zaXRpb246cmVsYXRpdmU7CisgICAg
cGFkZGluZy10b3A6MTBweDsKK30KKy5zcC1yYW5nZS1jb250YWluZXIgaW5wdXQgeyAKKyAgICB3
aWR0aDogNzUlOyAKK30KKy5zcC1yYW5nZS1jb250YWluZXIgZGl2IHsKKyAgICBwb3NpdGlvbjph
YnNvbHV0ZTsKKyAgICByaWdodDowOworICAgIHRvcDogMTBweDsKKyAgICBtYXJnaW46MDsKKyAg
ICBoZWlnaHQ6IDEycHg7CisgICAgd2lkdGg6IDEycHg7CisgICAgYmFja2dyb3VuZDogdXJsKElt
YWdlcy9nb0Fycm93LnBuZyk7Cit9Cisuc3dhdGNoLWlubmVyIHsgCisgICAgd2lkdGg6MTAwJTsg
aGVpZ2h0OjEwMCU7IGRpc3BsYXk6YmxvY2s7IAorfQorLnN3YXRjaCwgLnNwLWRyYWdnZXIsIC5z
cC1zbGlkZXIgeyAKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7IHVzZXItc2VsZWN0OiBu
b25lOyAKK30KKworLyogR3JhZGllbnRzIGZvciBodWUsIHNhdHVyYXRpb24gYW5kIHZhbHVlIGlu
c3RlYWQgb2YgaW1hZ2VzLiAgTm90IHByZXR0eS4uLiBidXQgaXQgd29ya3MgKi8KKy5zcC1zYXQg
eworICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQsICNG
RkYsIHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpOworICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVh
ci1ncmFkaWVudChsZWZ0LCAjRkZGLCByZ2JhKDIwNCwgMTU0LCAxMjksIDApKTsKK30KKy5zcC12
YWwgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGJvdHRv
bSwgIzAwMDAwMCwgcmdiYSgyMDQsIDE1NCwgMTI5LCAwKSk7CisgICAgYmFja2dyb3VuZC1pbWFn
ZTogbGluZWFyLWdyYWRpZW50KGJvdHRvbSwgIzAwMDAwMCwgcmdiYSgyMDQsIDE1NCwgMTI5LCAw
KSk7Cit9CisKKy5zcC1odWUgeworICAgIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRp
ZW50KHRvcCwgI2ZmMDAwMCAwJSwgI2ZmZmYwMCAxNyUsICMwMGZmMDAgMzMlLCAjMDBmZmZmIDUw
JSwgIzAwMDBmZiA2NyUsICNmZjAwZmYgODMlLCAjZmYwMDAwIDEwMCUpOworICAgIGJhY2tncm91
bmQ6IGxpbmVhci1ncmFkaWVudCh0b3AsICNmZjAwMDAgMCUsICNmZmZmMDAgMTclLCAjMDBmZjAw
IDMzJSwgIzAwZmZmZiA1MCUsICMwMDAwZmYgNjclLCAjZmYwMGZmIDgzJSwgI2ZmMDAwMCAxMDAl
KTsKK30KKworLnNwLWRyYWdnZXIgeworICAgYm9yZGVyLXJhZGl1czogNXB4OyAKKyAgIGhlaWdo
dDo1cHg7IAorICAgd2lkdGg6IDVweDsgCisgICBib3JkZXI6IHNvbGlkIGJsYWNrIDNweDsKKyAg
IGN1cnNvcjogcG9pbnRlcjsKKyAgIHBvc2l0aW9uOmFic29sdXRlOyAKKyAgIHRvcDowOyAKKyAg
IGxlZnQ6IDA7Cit9Cisuc3Atc2xpZGVyIHsgCisgICAgcG9zaXRpb246IGFic29sdXRlOyAKKyAg
ICB0b3A6MDsgCisgICAgY3Vyc29yOnBvaW50ZXI7CisgICAgaGVpZ2h0OiA1cHg7IAorICAgIHdp
ZHRoOiAxMTAlOworICAgIG1hcmdpbi1sZWZ0OiAtNSU7CisgICAgYmFja2dyb3VuZDogd2hpdGU7
IAorICAgIG9wYWNpdHk6IC44OyAKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IDcxMmVhZWMuLjVmYzA2MWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAt
ODEsNiArODEsNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9IkFwcGxpY2F0aW9uQ2FjaGVNb2RlbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQXBwbGljYXRpb25DYWNoZUl0ZW1zVmlldy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2NyaXB0
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJT
cGVjdHJ1bS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iU2lkZWJhclBhbmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IkVsZW1lbnRzVHJlZU91dGxpbmUuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRPTVByZXNlbnRhdGlvblV0aWxzLmpz
Ij48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>115979</attachid>
            <date>2011-11-20 00:23:46 -0800</date>
            <delta_ts>2011-11-20 00:23:46 -0800</delta_ts>
            <desc>[IMAGE] Screenshot with patch applied.</desc>
            <filename>Screen shot 2011-11-20 at 12.22.51 PM.png</filename>
            <type>image/png</type>
            <size>74701</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">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
9Op79vz8oPbPY++wJq/E97VmPGB7alt/mO5bHaoTJr73wWt+63tzti8hO3HfH/zctq1v+cnpLfO8
be+4U89+x40fv/JVm6+9s7bCTnz2AxduPPvVv/3bb9180rqP9X57fIDt3bd8+O0j607YtHnTDa2s
RgaKDzI0QCNPyefq3H3XB9afdOo5V17722999aknrPtw59JgnatPf8u1577h3f9z1js+Bxp7WhDr
+1qs8J41OulvlPBZMMdR1nv+hiiZ/jTk1o2ZQv0Knlx+wFtpZ7/U1n2rz/3x8wbYmc3ZxzLoxbR9
1cuXnfVu2In6Qcae/rFnN88+gg+AZ7E1zfabP8gvz23qzUMT33j31mu2Xnv7nTd95M6pqbednYfd
e7f/2hU3v+1TD9500yfObZqf++3PzovR3V969RuuedtHb76azRy9z5sHig801PO3PzNI59j6l9z8
hR1Td9500527btjavPdTX1Nifp0v+rFfaK7/7a/kPVD9up+m+fb7WiOjzeiquS9p4ssm/anbutH4
M5Dzf19rBULrabtv1e4b9K5ZX/I6tm5sbOTMM898e/fu3vXNtne88by8kvaSW7p3zTIh3PZb237p
517WW2fvveez1zcXv/Oizbt37uRt2Xm4xGtyv7mtOfdfvGbD/b//X7Zh9M7vzPuS+3U//JV7Hv71
i36cn47spYHiAw31RGZkBulce/IrL9jCSwpJ42e/9tztf+5PWiygc+3JZ13c3Lzt627i7dLTeHtu
99CP2asZ9ve1pvxZLUOr/X0tA7D/97WWPbSexvtWA5E575q9/495yeu1tz+4f9dXzt++/Q+n393b
7GrfNbv71a/9YPeVp4lHtzfPO+G4Dm3N/v28nO/GzevH1p9wwvp1I9fl3WD7H+cHi89d/8gdv/gz
7/ulqy9ttt338HzT1upjTz+FiU4tvTRQfKChnsiMzCCd0wx773r35dt+6V+9gnl3IZ2rT/rRzc1e
vljbl5Z3G3Gf4hXPdg/9lvP7WssdWvVO3P/Dd+KuOpZ34r6SVcz0btTVG3ipbXPjn/FLldNp4L7V
OZztvtVjx484Y8tx7X2/+0EffPDTZy/H/reeP+27Zo8dP/GMLWeduHZ33t170VkbVo+f/i/eBZpa
xl1N85Y38K7ZtS/fenGz/aavtZfvPf0xEFb3MXx0+66pqal7br708nP+W4LwWc3mh2/+1bPvfdft
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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>116361</attachid>
            <date>2011-11-23 08:29:26 -0800</date>
            <delta_ts>2011-11-23 08:29:26 -0800</delta_ts>
            <desc>Screenshot with updated patch running</desc>
            <filename>colorpicker-inspector-updated.png</filename>
            <type>image/png</type>
            <size>77709</size>
            <attacher name="Brian Grinstead">briangrinstead</attacher>
            
              <data encoding="base64">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
4Tn/0D0NAAAAAElFTkSuQmCC
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116365</attachid>
            <date>2011-11-23 08:36:55 -0800</date>
            <delta_ts>2011-11-23 12:03:59 -0800</delta_ts>
            <desc>Patch with updates (see comments for details)</desc>
            <filename>webinspector-colorpicker2.patch</filename>
            <type>text/plain</type>
            <size>34241</size>
            <attacher name="Brian Grinstead">briangrinstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ZTFhNGFmLi4yNzdhNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYg
QEAKKzIwMTEtMTEtMjMgIGJncmlucyAgPGJyaWFuZ3JpbnN0ZWFkQGdtYWlsLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgY29sb3JwaWNrZXIgZnVuY3Rpb25hbGl0eSB0byBjb2xv
ciBzd2F0Y2hlcyBpbiBTdHlsZXMgU2lkZWJhcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEyNjIKKworICAgICAgICB1cGRhdGVkIGNvbW1pdCBmb3Ig
Y29sb3JwaWNrZXIgZnVuY3Rpb25hbGl0eSBiYXNlZCBvbiBmZWVkYmFjayBmcm9tIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTI2Mi4gIENoYW5nZXMgaW5jbHVkZTog
dXNpbmcgb25seSBvbmUgY29sb3JwaWNrZXIgZm9yIHRoZSB3aG9sZSBzdHlsZXMgcGFuZWwsIFVJ
IGltcHJvdmVtZW50cywgd29ya2luZyBvbiBlbGVtZW50LnN0eWxlLCBuYXRpdmUgV2ViS2l0LkNv
bG9yIHdpdGhpbiBwbHVnaW4sIHVzZSB3ZWJraXQgc3R5bGUgZm9yIGNvZGUsIHVwZGF0ZSBwcm9q
ZWN0IHJlZmVyZW5jZXMsIHVzZSBwb3BvdmVyIGluc3RlYWQgb2YgY3VzdG9tIG1lYXN1cmVtZW50
cworICAgICAgICAKKwlSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbG9yLmZyb21SR0IpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zl
ci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qb3BvdmVyKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Qb3BvdmVyLnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qb3Bv
dmVyLnByb3RvdHlwZS5oaWRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3Rv
dHlwZS5fcG9zaXRpb25FbGVtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Nw
ZWN0cnVtLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5odWVEcmFn
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5jb2xvckRyYWcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNwZWN0cnVtLmFscGhhRHJhZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U3BlY3RydW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmdldFN3YXRjaEVsZW1l
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmhzdlRvUmdiKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5yZ2JUb0hzdik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U3BlY3RydW0uZHJhZ2dhYmxlLm9uc3RhcnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0
cnVtLmRyYWdnYWJsZS5vbnN0b3ApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmRy
YWdnYWJsZS52YXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmRyYWdnYWJsZS5w
cmV2ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUubW92ZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxlLnN0YXJ0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUuc3RvcCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVj
dHJ1bS5wcm90b3R5cGUuc2V0IGNvbG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1
bS5wcm90b3R5cGUuZ2V0IGNvbG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5w
cm90b3R5cGUuZ2V0IGNvbG9yTm9TYXRWYWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0
cnVtLnByb3RvdHlwZS5zZXQgZGlzcGxheVRleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNw
ZWN0cnVtLnByb3RvdHlwZS5faXNTaG93bi5mYWxzZS5fb25jaGFuZ2UpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS5fdXBkYXRlSGVscGVyTG9jYXRpb25zKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuX3VwZGF0ZVVJKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUudG9nZ2xlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuc2hvdyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU3BlY3RydW0ucHJvdG90eXBlLmhpZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvU3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lk
ZWJhclBhbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVu
dC5wcm90b3R5cGUudXBkYXRlVGl0bGUuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3Nz
OgorICAgICAgICAoLnN3YXRjaCk6CisgICAgICAgICguc3dhdGNoLWlubmVyKToKKyAgICAgICAg
KC5zcGVjdHJ1bS1jb250YWluZXIpOgorICAgICAgICAoLnNwZWN0cnVtLXRvcCk6CisgICAgICAg
ICguc3BlY3RydW0tdG9wLWlubmVyKToKKyAgICAgICAgKC5zcGVjdHJ1bS1jb2xvcik6CisgICAg
ICAgICguc3BlY3RydW0taHVlKToKKyAgICAgICAgKC5zcGVjdHJ1bS1maWxsKToKKyAgICAgICAg
KC5zcGVjdHJ1bS1zYXQsIC5zcGVjdHJ1bS12YWwpOgorICAgICAgICAoLnNwZWN0cnVtLXJhbmdl
LWNvbnRhaW5lcik6CisgICAgICAgICguc3BlY3RydW0tcmFuZ2UtY29udGFpbmVyICopOgorICAg
ICAgICAoLnNwZWN0cnVtLXJhbmdlLWNvbnRhaW5lciBsYWJlbCk6CisgICAgICAgICguc3BlY3Ry
dW0tcmFuZ2UtY29udGFpbmVyIGlucHV0KToKKyAgICAgICAgKC5zd2F0Y2gsIC5zcGVjdHJ1bS1k
cmFnZ2VyLCAuc3BlY3RydW0tc2xpZGVyKToKKyAgICAgICAgKC5zcGVjdHJ1bS1zYXQpOgorICAg
ICAgICAoLnNwZWN0cnVtLXZhbCk6CisgICAgICAgICguc3BlY3RydW0tZHJhZ2dlcik6CisgICAg
ICAgICguc3BlY3RydW0tc2xpZGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpz
OgorICAgICAgICAoc2V0dXBQcm90b3R5cGVVdGlsaXRpZXMuRWxlbWVudC5wcm90b3R5cGUudG90
YWxPZmZzZXQpOgorICAgICAgICAoc2V0dXBQcm90b3R5cGVVdGlsaXRpZXMuRWxlbWVudC5wcm90
b3R5cGUuc2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKCk6CisKIDIwMTEtMTEtMDkgIFNpbW9uIEhh
dXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gVW5yZXZp
ZXdlZCwgYWRkaW5nIG1pc3NpbmcgZmlsZXMgdG8gdGhlIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDQ4MjZjNWEuLmMxYTg3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYzOTgsNiArNjM5OCw3
IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VIVE1MVG9rZW5pemVy
LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUphdmFTY3JpcHRU
b2tlbml6ZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlVG9r
ZW5pemVyLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NwZWN0cnVtLmpz
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1N0YXR1c0JhckJ1dHRvbi5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRQYW5lLmpzJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYWRkZmEyNC4u
ZDlkZTIyMCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKQEAgLTY5MTQ5LDYgKzY5MTQ5LDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZp
bGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFNwZWN0cnVtLmpz
IgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aW5zcGVjdG9yXGZyb250LWVuZFxTdGF0dXNCYXJCdXR0b24uanMiCiAJCQkJCT4KIAkJCQk8L0Zp
bGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbG9y
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db2xvci5qcwppbmRleCA2
MjU4OGRmLi41ZmMyODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q29sb3IuanMKQEAgLTQzLDYgKzQzLDEwIEBAIFdlYkluc3BlY3Rvci5Db2xvci5mcm9tUkdCQSA9
IGZ1bmN0aW9uKHIsIGcsIGIsIGEpCiB7CiAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29s
b3IoInJnYmEoIiArIHIgKyAiLCIgKyBnICsgIiwiICsgYiArICIsIiArICh0eXBlb2YgYSA9PT0g
InVuZGVmaW5lZCIgPyAxIDogYSkgKyAiKSIpOwogfQorV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21S
R0IgPSBmdW5jdGlvbihyLCBnLCBiKQoreworICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNv
bG9yKCJyZ2IoIiArIHIgKyAiLCIgKyBnICsgIiwiICsgYiArICIpIik7Cit9CiAKIFdlYkluc3Bl
Y3Rvci5Db2xvci5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IHNob3J0aGV4KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qcwppbmRleCA0YmZkNmEzLi45MDcy
OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92
ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpz
CkBAIC0zMiw3ICszMiw3IEBACiAgKiBAY29uc3RydWN0b3IKICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlBvcG92ZXJIZWxwZXI9fSBwb3BvdmVySGVscGVyCiAgKi8KLVdlYkluc3BlY3Rvci5Qb3Bv
dmVyID0gZnVuY3Rpb24ocG9wb3ZlckhlbHBlcikKK1dlYkluc3BlY3Rvci5Qb3BvdmVyID0gZnVu
Y3Rpb24ocG9wb3ZlckhlbHBlciwgYXBwZW5kRWxlbWVudCwgaGlkZU92ZXJmbG93KQogewogICAg
IHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMu
ZWxlbWVudC5jbGFzc05hbWUgPSAicG9wb3ZlciBjdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xs
IGN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCI7CkBAIC00NSw2ICs0NSwxMyBAQCBXZWJJ
bnNwZWN0b3IuUG9wb3ZlciA9IGZ1bmN0aW9uKHBvcG92ZXJIZWxwZXIpCiAgICAgdGhpcy5fY29u
dGVudERpdi5jbGFzc05hbWUgPSAiY29udGVudCI7CiAgICAgdGhpcy5fdmlzaWJsZSA9IGZhbHNl
OwogICAgIHRoaXMuX3BvcG92ZXJIZWxwZXIgPSBwb3BvdmVySGVscGVyOworICAgIAorICAgIHRo
aXMuX2FwcGVuZEVsZW1lbnQgPSBhcHBlbmRFbGVtZW50IHx8IGRvY3VtZW50LmJvZHk7CisgICAg
dGhpcy5faGlkZU92ZXJmbG93ID0gaGlkZU92ZXJmbG93OworICAgIAorICAgIGlmIChoaWRlT3Zl
cmZsb3cpIHsKKyAgICAgICAgdGhpcy5fY29udGVudERpdi5zdHlsZS5vdmVyZmxvdyA9ICJoaWRk
ZW4iOworICAgIH0KIH0KIAogV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewpAQCAt
NTYsMTggKzYzLDE4IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICAvLyBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgd2UgaGlkZSBwcmV2aW91cyBwb3B1
cCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlLgogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLlBvcG92
ZXIuX3BvcG92ZXJFbGVtZW50KQotICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGls
ZChXZWJJbnNwZWN0b3IuUG9wb3Zlci5fcG9wb3ZlckVsZW1lbnQpOworICAgICAgICAgICAgdGhp
cy5fYXBwZW5kRWxlbWVudC5yZW1vdmVDaGlsZChXZWJJbnNwZWN0b3IuUG9wb3Zlci5fcG9wb3Zl
ckVsZW1lbnQpOwogICAgICAgICBXZWJJbnNwZWN0b3IuUG9wb3Zlci5fcG9wb3ZlckVsZW1lbnQg
PSB0aGlzLmVsZW1lbnQ7CiAKICAgICAgICAgLy8gVGVtcG9yYXJpbHkgYXR0YWNoIGluIG9yZGVy
IHRvIG1lYXN1cmUgcHJlZmVycmVkIGRpbWVuc2lvbnMuCiAgICAgICAgIHRoaXMuY29udGVudEVs
ZW1lbnQucG9zaXRpb25BdCgwLCAwKTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZCh0aGlzLmNvbnRlbnRFbGVtZW50KTsKKyAgICAgICAgdGhpcy5fYXBwZW5kRWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLmNvbnRlbnRFbGVtZW50KTsKICAgICAgICAgcHJlZmVycmVkV2lkdGggPSBw
cmVmZXJyZWRXaWR0aCB8fCB0aGlzLmNvbnRlbnRFbGVtZW50Lm9mZnNldFdpZHRoOwogICAgICAg
ICBwcmVmZXJyZWRIZWlnaHQgPSBwcmVmZXJyZWRIZWlnaHQgfHwgdGhpcy5jb250ZW50RWxlbWVu
dC5vZmZzZXRIZWlnaHQ7CiAKICAgICAgICAgdGhpcy5fY29udGVudERpdi5hcHBlbmRDaGlsZCh0
aGlzLmNvbnRlbnRFbGVtZW50KTsKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2NvbnRlbnREaXYpOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMu
ZWxlbWVudCk7CisgICAgICAgIHRoaXMuX2FwcGVuZEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5l
bGVtZW50KTsKICAgICAgICAgdGhpcy5fcG9zaXRpb25FbGVtZW50KGFuY2hvciwgcHJlZmVycmVk
V2lkdGgsIHByZWZlcnJlZEhlaWdodCk7CiAgICAgICAgIHRoaXMuX3Zpc2libGUgPSB0cnVlOwog
ICAgICAgICBpZiAodGhpcy5fcG9wb3ZlckhlbHBlcikKQEAgLTc4LDcgKzg1LDcgQEAgV2ViSW5z
cGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3Bl
Y3Rvci5Qb3BvdmVyLl9wb3BvdmVyRWxlbWVudCkgewogICAgICAgICAgICAgZGVsZXRlIFdlYklu
c3BlY3Rvci5Qb3BvdmVyLl9wb3BvdmVyRWxlbWVudDsKLSAgICAgICAgICAgIGRvY3VtZW50LmJv
ZHkucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuX2FwcGVuZEVs
ZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTsKICAgICAgICAgfQogICAgICAgICB0aGlz
Ll92aXNpYmxlID0gZmFsc2U7CiAgICAgfSwKQEAgLTkyLDcgKzk5LDcgQEAgV2ViSW5zcGVjdG9y
LlBvcG92ZXIucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3Bv
c2VkOwogICAgIH0sCi0KKyAgICAKICAgICBkaXNwb3NlOiBmdW5jdGlvbigpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy52aXNpYmxlKQpAQCAtMTAzLDE5ICsxMTAsMjUgQEAgV2ViSW5zcGVjdG9y
LlBvcG92ZXIucHJvdG90eXBlID0gewogICAgIF9wb3NpdGlvbkVsZW1lbnQ6IGZ1bmN0aW9uKGFu
Y2hvckVsZW1lbnQsIHByZWZlcnJlZFdpZHRoLCBwcmVmZXJyZWRIZWlnaHQpCiAgICAgewogICAg
ICAgICBjb25zdCBib3JkZXJXaWR0aCA9IDI1OwotICAgICAgICBjb25zdCBzY3JvbGxlcldpZHRo
ID0gMTE7CisgICAgICAgIGNvbnN0IHNjcm9sbGVyV2lkdGggPSB0aGlzLl9oaWRlT3ZlcmZsb3cg
PyAwIDogMTE7CiAgICAgICAgIGNvbnN0IGFycm93SGVpZ2h0ID0gMTU7CiAgICAgICAgIGNvbnN0
IGFycm93T2Zmc2V0ID0gMTA7CiAgICAgICAgIGNvbnN0IGJvcmRlclJhZGl1cyA9IDEwOwogCiAg
ICAgICAgIC8vIFNraW5ueSB0b29sdGlwcyBhcmUgbm90IHByZXR0eSwgdGhlaXIgYXJyb3cgbG9j
YXRpb24gaXMgbm90IG5pY2UuCiAgICAgICAgIHByZWZlcnJlZFdpZHRoID0gTWF0aC5tYXgocHJl
ZmVycmVkV2lkdGgsIDUwKTsKLSAgICAgICAgY29uc3QgdG90YWxXaWR0aCA9IHdpbmRvdy5pbm5l
cldpZHRoOwotICAgICAgICBjb25zdCB0b3RhbEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDsK
KyAgICAgICAgY29uc3QgdG90YWxXaWR0aCA9IHRoaXMuX2FwcGVuZEVsZW1lbnQgPyB0aGlzLl9h
cHBlbmRFbGVtZW50LmNsaWVudFdpZHRoIDogd2luZG93LmlubmVyV2lkdGg7CisgICAgICAgIGNv
bnN0IHRvdGFsSGVpZ2h0ID0gdGhpcy5fYXBwZW5kRWxlbWVudCA/IHRoaXMuX2FwcGVuZEVsZW1l
bnQuY2xpZW50SGVpZ2h0IDogd2luZG93LmlubmVySGVpZ2h0OwogCiAgICAgICAgIHZhciBhbmNo
b3JCb3ggPSBhbmNob3JFbGVtZW50LmJveEluV2luZG93KHdpbmRvdyk7CiAgICAgICAgIHZhciBu
ZXdFbGVtZW50UG9zaXRpb24gPSB7IHg6IDAsIHk6IDAsIHdpZHRoOiBwcmVmZXJyZWRXaWR0aCAr
IHNjcm9sbGVyV2lkdGgsIGhlaWdodDogcHJlZmVycmVkSGVpZ2h0IH07Ci0KKyAgICAgICAgCisg
ICAgICAgIGlmICh0aGlzLl9hcHBlbmRFbGVtZW50KSB7CisgICAgICAgICAgICB2YXIgcmVsYXRp
dmVPZmZzZXQgPSBhbmNob3JFbGVtZW50LnRvdGFsT2Zmc2V0KHRoaXMuX2FwcGVuZEVsZW1lbnQp
OworICAgICAgICAgICAgYW5jaG9yQm94LnggPSByZWxhdGl2ZU9mZnNldC5sZWZ0OworICAgICAg
ICAgICAgYW5jaG9yQm94LnkgPSByZWxhdGl2ZU9mZnNldC50b3A7CisgICAgICAgIH0KKyAgICAg
ICAgCiAgICAgICAgIHZhciB2ZXJ0aWNhbEFsaWdubWVudDsKICAgICAgICAgdmFyIHJvb21BYm92
ZSA9IGFuY2hvckJveC55OwogICAgICAgICB2YXIgcm9vbUJlbG93ID0gdG90YWxIZWlnaHQgLSBh
bmNob3JCb3gueSAtIGFuY2hvckJveC5oZWlnaHQ7CkBAIC0xNjAsNyArMTczLDcgQEAgV2ViSW5z
cGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fcG9wdXBBcnJv
d0VsZW1lbnQuc3R5bGUubGVmdCA9IE1hdGgubWF4KDAsIGFuY2hvckJveC54IC0gYm9yZGVyUmFk
aXVzICogMiAtIGFycm93T2Zmc2V0KSArICJweCI7CiAgICAgICAgICAgICB0aGlzLl9wb3B1cEFy
cm93RWxlbWVudC5zdHlsZS5sZWZ0ICs9IGFuY2hvckJveC53aWR0aCAvIDI7CiAgICAgICAgIH0K
LQorICAgICAgICAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJwb3BvdmVyIGN1
c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xs
ICIgKyB2ZXJ0aWNhbEFsaWdubWVudCArICItIiArIGhvcml6b250YWxBbGlnbm1lbnQgKyAiLWFy
cm93IjsKICAgICAgICAgdGhpcy5lbGVtZW50LnBvc2l0aW9uQXQobmV3RWxlbWVudFBvc2l0aW9u
LnggLSBib3JkZXJXaWR0aCwgbmV3RWxlbWVudFBvc2l0aW9uLnkgLSBib3JkZXJXaWR0aCk7CiAg
ICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IG5ld0VsZW1lbnRQb3NpdGlvbi53aWR0
aCArIGJvcmRlcldpZHRoICogMiArICJweCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NwZWN0cnVtLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TcGVjdHJ1bS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5iMDRkNmYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TcGVjdHJ1bS5qcwpAQCAtMCwwICsxLDM2MSBAQAorCitXZWJJbnNwZWN0b3IuU3Bl
Y3RydW0gPSBmdW5jdGlvbihjb250YWluZXIpCit7CisgICAgdGhpcy5fcG9wb3ZlciA9IG5ldyBX
ZWJJbnNwZWN0b3IuUG9wb3ZlcihudWxsLCBjb250YWluZXIsIHRydWUpOworICAgIHRoaXMuX3Bv
cG92ZXIuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCBzdG9wUHJvcGFnYXRp
b24sIGZhbHNlKTsKKyAgICAKKyAgICB0aGlzLl9jb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5jbGFzc05h
bWUgPSAic3BlY3RydW0tY29udGFpbmVyIjsKKyAgICAKKyAgICB2YXIgdG9wRWxlbWVudCA9IHRo
aXMuX2NvbnRhaW5lckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJzcGVjdHJ1bS10b3AiKTsK
KyAgICB0b3BFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0tZmlsbCIpOworCisg
ICAgdmFyIHRvcElubmVyRWxlbWVudCA9IHRvcEVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJz
cGVjdHJ1bS10b3AtaW5uZXIiKTsKKyAgICB0aGlzLl9kcmFnZ2VyRWxlbWVudCA9IHRvcElubmVy
RWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVtLWNvbG9yIik7CisgICAgdGhpcy5f
ZHJhZ0hlbHBlckVsZW1lbnQgPSB0aGlzLl9kcmFnZ2VyRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2
IiwgInNwZWN0cnVtLXNhdCIpLmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0tdmFsIikuY3Jl
YXRlQ2hpbGQoImRpdiIsICJzcGVjdHJ1bS1kcmFnZ2VyIik7CisgICAgCisgICAgdGhpcy5fc2xp
ZGVyRWxlbWVudCA9IHRvcElubmVyRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVt
LWh1ZSIpOworICAgIHRoaXMuc2xpZGVIZWxwZXIgPSB0aGlzLl9zbGlkZXJFbGVtZW50LmNyZWF0
ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0tc2xpZGVyIik7CisgICAgCisgICAgdmFyIHJhbmdlQ29u
dGFpbmVyID0gdGhpcy5fY29udGFpbmVyRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0
cnVtLXJhbmdlLWNvbnRhaW5lciIpOworICAgIHZhciBhbHBoYUxhYmVsID0gcmFuZ2VDb250YWlu
ZXIuY3JlYXRlQ2hpbGQoImxhYmVsIik7CisgICAgYWxwaGFMYWJlbC50ZXh0Q29udGVudCA9ICJh
bHBoYTogIjsKKyAgICAKKyAgICB0aGlzLl9hbHBoYUVsZW1lbnQgPSByYW5nZUNvbnRhaW5lci5j
cmVhdGVDaGlsZCgiaW5wdXQiLCAic3BlY3RydW0tcmFuZ2UiKTsKKyAgICB0aGlzLl9hbHBoYUVs
ZW1lbnQuc2V0QXR0cmlidXRlKCJ0eXBlIiwgInJhbmdlIik7CisgICAgdGhpcy5fYWxwaGFFbGVt
ZW50LnNldEF0dHJpYnV0ZSgibWluIiwgIjAiKTsKKyAgICB0aGlzLl9hbHBoYUVsZW1lbnQuc2V0
QXR0cmlidXRlKCJtYXgiLCAiMTAwIik7CisgICAgdGhpcy5fYWxwaGFFbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImNoYW5nZSIsIGFscGhhRHJhZy5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgCisg
ICAgCisgICAgdmFyIHN3YXRjaENsb25lID0gV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmdldFN3YXRj
aEVsZW1lbnQoKTsKKyAgICB0aGlzLl9zd2F0Y2hTZWNvbmQgPSBzd2F0Y2hDbG9uZS5xdWVyeVNl
bGVjdG9yQWxsKCIuc3dhdGNoLWlubmVyIilbMF07CisgICAgCisgICAgdmFyIGRpc3BsYXlDb250
YWluZXIgPSByYW5nZUNvbnRhaW5lci5jcmVhdGVDaGlsZCgiZGl2Iik7CisgICAgCisgICAgdmFy
IGNvbG9yTGFiZWwgPSBkaXNwbGF5Q29udGFpbmVyLmNyZWF0ZUNoaWxkKCJsYWJlbCIpOworICAg
IGNvbG9yTGFiZWwudGV4dENvbnRlbnQgPSAiY29sb3I6ICI7CisgICAgCisgICAgZGlzcGxheUNv
bnRhaW5lci5hcHBlbmRDaGlsZChzd2F0Y2hDbG9uZSk7CisgICAgCisgICAgdGhpcy5fZGlzcGxh
eUVsZW1lbnQgPSBkaXNwbGF5Q29udGFpbmVyLmNyZWF0ZUNoaWxkKCJzcGFuIik7CisgICAgCisg
ICAgV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmRyYWdnYWJsZSh0aGlzLl9zbGlkZXJFbGVtZW50LCBo
dWVEcmFnLmJpbmQodGhpcykpOworICAgIFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUo
dGhpcy5fZHJhZ2dlckVsZW1lbnQsIGNvbG9yRHJhZy5iaW5kKHRoaXMpKTsKKyAgICAKKyAgICAv
L2NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXJFbGVtZW50KTsKKyAgICAKKyAg
ICBmdW5jdGlvbiBodWVEcmFnKGRyYWdYLCBkcmFnWSkgCisgICAgeworICAgICAgICB0aGlzLmhz
dlswXSA9IChkcmFnWSAvIHRoaXMuc2xpZGVIZWlnaHQpOworICAgICAgICAKKyAgICAgICAgdGhp
cy5fdXBkYXRlVUkoKTsKKyAgICAgICAgdGhpcy5fb25jaGFuZ2UoKTsgIAorICAgIH0KKyAgICAK
KyAgICBmdW5jdGlvbiBjb2xvckRyYWcoZHJhZ1gsIGRyYWdZKSAKKyAgICB7CisgICAgICAgIHRo
aXMuaHN2WzFdID0gZHJhZ1ggLyB0aGlzLmRyYWdXaWR0aDsKKyAgICAgICAgdGhpcy5oc3ZbMl0g
PSAodGhpcy5kcmFnSGVpZ2h0IC0gZHJhZ1kpIC8gdGhpcy5kcmFnSGVpZ2h0OworICAgICAgICAK
KyAgICAgICAgdGhpcy5fdXBkYXRlVUkoKTsKKyAgICAgICAgdGhpcy5fb25jaGFuZ2UoKTsKKyAg
ICB9CisgICAgCisgICAgZnVuY3Rpb24gYWxwaGFEcmFnKCkgCisgICAgeworICAgICAgICB0aGlz
LmhzdlszXSA9IHRoaXMuX2FscGhhRWxlbWVudC52YWx1ZSAvIDEwMDsKKyAgICAgICAgCisgICAg
ICAgIHRoaXMuX3VwZGF0ZVVJKCk7CisgICAgICAgIHRoaXMuX29uY2hhbmdlKCk7CisgICAgfQor
ICAgIAorICAgIHRoaXMuaGlkZVByb3h5ID0gdGhpcy5oaWRlLmJpbmQodGhpcyk7Cit9CisKKwor
V2ViSW5zcGVjdG9yLlNwZWN0cnVtLmdldFN3YXRjaEVsZW1lbnQgPSBmdW5jdGlvbigpIHsKKyAg
ICB2YXIgc3dhdGNoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAg
ICBzd2F0Y2hFbGVtZW50LmNsYXNzTmFtZSA9ICJzd2F0Y2giOworICAgIHN3YXRjaEVsZW1lbnQu
Y3JlYXRlQ2hpbGQoInNwYW4iLCAic3dhdGNoLWlubmVyIik7CisgICAgcmV0dXJuIHN3YXRjaEVs
ZW1lbnQ7Cit9CisKK1dlYkluc3BlY3Rvci5TcGVjdHJ1bS5oc3ZUb1JnYiA9IGZ1bmN0aW9uKGgs
IHMsIHYsIGEpIHsKKworICAgIHZhciByLCBnLCBiOworICAgIAorICAgIHZhciBpID0gTWF0aC5m
bG9vcihoICogNik7CisgICAgdmFyIGYgPSBoICogNiAtIGk7CisgICAgdmFyIHAgPSB2ICogKDEg
LSBzKTsKKyAgICB2YXIgcSA9IHYgKiAoMSAtIGYgKiBzKTsKKyAgICB2YXIgdCA9IHYgKiAoMSAt
ICgxIC0gZikgKiBzKTsKKyAgICAKKyAgICBzd2l0Y2goaSAlIDYpIHsKKyAgICBjYXNlIDA6IAor
ICAgICAgICByID0gdiwgZyA9IHQsIGIgPSBwOyAKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAx
OiAKKyAgICAgICAgciA9IHEsIGcgPSB2LCBiID0gcDsgCisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgMjogCisgICAgICAgIHIgPSBwLCBnID0gdiwgYiA9IHQ7IAorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIDM6IAorICAgICAgICByID0gcCwgZyA9IHEsIGIgPSB2OyAKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSA0OiAKKyAgICAgICAgciA9IHQsIGcgPSBwLCBiID0gdjsgCisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgNTogCisgICAgICAgIHIgPSB2LCBnID0gcCwgYiA9IHE7IAorICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFtyICogMjU1LCBnICogMjU1LCBiICog
MjU1LCBhXTsKK307CisKK1dlYkluc3BlY3Rvci5TcGVjdHJ1bS5yZ2JUb0hzdiA9IGZ1bmN0aW9u
KHIsIGcsIGIsIGEpIHsKKworICAgIHIgPSByIC8gMjU1OworICAgIGcgPSBnIC8gMjU1OworICAg
IGIgPSBiIC8gMjU1OworICAgIAorICAgIHZhciBtYXggPSBNYXRoLm1heChyLCBnLCBiKSwgbWlu
ID0gTWF0aC5taW4ociwgZywgYik7CisgICAgdmFyIGgsIHMsIHYgPSBtYXg7CisKKyAgICB2YXIg
ZCA9IG1heCAtIG1pbjsKKyAgICBzID0gbWF4ID09IDAgPyAwIDogZCAvIG1heDsKKworICAgIGlm
KG1heCA9PSBtaW4pIHsKKyAgICAgICAgLy8gYWNocm9tYXRpYworICAgICAgICBoID0gMDsgCisg
ICAgfQorICAgIGVsc2UgeworICAgICAgICBzd2l0Y2gobWF4KSB7CisgICAgICAgIGNhc2Ugcjog
CisgICAgICAgICAgICBoID0gKGcgLSBiKSAvIGQgKyAoZyA8IGIgPyA2IDogMCk7IAorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgZzogCisgICAgICAgICAgICBoID0gKGIgLSByKSAv
IGQgKyAyOyAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGI6IAorICAgICAgICAg
ICAgaCA9IChyIC0gZykgLyBkICsgNDsgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBoIC89IDY7CisgICAgfQorICAgIHJldHVybiBbaCwgcywgdiwgYV07Cit9OworCitX
ZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxlID0gZnVuY3Rpb24oZWxlbWVudCwgb25tb3Zl
LCBvbnN0YXJ0LCBvbnN0b3ApIHsKKworICAgIG9ubW92ZSA9IG9ubW92ZSB8fCBmdW5jdGlvbigp
IHsgfTsKKyAgICBvbnN0YXJ0ID0gb25zdGFydCB8fCBmdW5jdGlvbigpIHsgfTsKKyAgICBvbnN0
b3AgPSBvbnN0b3AgfHwgZnVuY3Rpb24oKSB7IH07CisgICAgCisgICAgdmFyIGRvYyA9IGRvY3Vt
ZW50OworICAgIHZhciBkcmFnZ2luZyA9IGZhbHNlOworICAgIHZhciBvZmZzZXQgPSB7IH07Cisg
ICAgdmFyIG1heEhlaWdodCA9IDA7CisgICAgdmFyIG1heFdpZHRoID0gMDsKKworICAgIGZ1bmN0
aW9uIHByZXZlbnQoZSkgCisgICAgeworICAgICAgICBpZiAoZS5zdG9wUHJvcGFnYXRpb24pCisg
ICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICAKKyAgICAgICAgaWYgKGUu
cHJldmVudERlZmF1bHQpCisgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAgICAg
ICAgICAKKyAgICAgICAgZS5yZXR1cm5WYWx1ZSA9IGZhbHNlOworICAgIH0KKyAgICAKKyAgICBm
dW5jdGlvbiBtb3ZlKGUpIAorICAgIHsKKyAgICAgICAgaWYgKGRyYWdnaW5nKSB7CisgICAgICAg
ICAgICB2YXIgZHJhZ1ggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihlLnBhZ2VYIC0gb2Zmc2V0Lmxl
ZnQgKyBzY3JvbGxPZmZzZXQubGVmdCwgbWF4V2lkdGgpKTsKKyAgICAgICAgICAgIHZhciBkcmFn
WSA9IE1hdGgubWF4KDAsIE1hdGgubWluKGUucGFnZVkgLSBvZmZzZXQudG9wICsgc2Nyb2xsT2Zm
c2V0LnRvcCwgbWF4SGVpZ2h0KSk7CisgICAgICAgICAgICBvbm1vdmUuYXBwbHkoZWxlbWVudCwg
W2RyYWdYLCBkcmFnWV0pOyAKKyAgICAgICAgfSAKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24g
c3RhcnQoZSkgCisgICAgeyAKKyAgICAgICAgdmFyIHJpZ2h0Y2xpY2sgPSAoZS53aGljaCkgPyAo
ZS53aGljaCA9PSAzKSA6IChlLmJ1dHRvbiA9PSAyKTsKKyAgICAgICAgCisgICAgICAgIGlmICgh
cmlnaHRjbGljayAmJiAhZHJhZ2dpbmcpIHsgCisgICAgICAgICAgICBpZiAob25zdGFydC5hcHBs
eShlbGVtZW50LCBhcmd1bWVudHMpICE9PSBmYWxzZSkgeworICAgICAgICAgICAgICAgIGRyYWdn
aW5nID0gdHJ1ZTsgCisgICAgICAgICAgICAgICAgbWF4SGVpZ2h0ID0gZWxlbWVudC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICAgICAgbWF4V2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHNjcm9sbE9mZnNldCA9IGVsZW1lbnQu
c2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gZWxlbWVudC50b3RhbE9m
ZnNldCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0c3RhcnQiLCBwcmV2ZW50LCBmYWxzZSk7Cisg
ICAgICAgICAgICAgICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdzdGFydCIsIHByZXZlbnQs
IGZhbHNlKTsKKyAgICAgICAgICAgICAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3Zl
IiwgbW92ZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGRvYy5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZXVwIiwgc3RvcCwgZmFsc2UpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IHByZXZlbnQoZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAg
ZnVuY3Rpb24gc3RvcCgpIAorICAgIHsgCisgICAgICAgIGlmIChkcmFnZ2luZykgeyAKKyAgICAg
ICAgICAgIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCJzZWxlY3RzdGFydCIsIHByZXZlbnQsIGZh
bHNlKTsKKyAgICAgICAgICAgIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCBw
cmV2ZW50LCBmYWxzZSk7CisgICAgICAgICAgICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91
c2Vtb3ZlIiwgbW92ZSwgZmFsc2UpOworICAgICAgICAgICAgZG9jLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoIm1vdXNldXAiLCBzdG9wLCBmYWxzZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG9u
c3RvcC5hcHBseShlbGVtZW50LCBhcmd1bWVudHMpOyAKKyAgICAgICAgfQorICAgICAgICBkcmFn
Z2luZyA9IGZhbHNlOyAKKyAgICB9CisgICAgCisgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZWRvd24iLCBzdGFydCwgZmFsc2UpOworfTsKKworV2ViSW5zcGVjdG9yLlNwZWN0cnVt
LnByb3RvdHlwZSA9IHsKKyAgICBzZXQgY29sb3IoY29sb3IpCisgICAgeworICAgICAgICB2YXIg
cmdiYSA9IChjb2xvci5yZ2JhIHx8IGNvbG9yLnJnYikuc2xpY2UoMCk7CisgICAgICAgIGlmIChy
Z2JhLmxlbmd0aCA8IDQpIHsKKyAgICAgICAgICAgIHJnYmFbM10gPSAxOworICAgICAgICB9Cisg
ICAgICAgIHRoaXMuaHN2ID0gV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnJnYlRvSHN2KHJnYmFbMF0s
IHJnYmFbMV0sIHJnYmFbMl0sIHJnYmFbM10pOworICAgIH0sCisKKyAgICBnZXQgY29sb3IoKQor
ICAgIHsKKyAgICAgICAgdmFyIHJnYiA9IFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5oc3ZUb1JnYih0
aGlzLmhzdlswXSwgdGhpcy5oc3ZbMV0sIHRoaXMuaHN2WzJdLCB0aGlzLmhzdlszXSk7CisgICAg
ICAgIHZhciByb3VuZCA9IFtNYXRoLnJvdW5kKHJnYlswXSksIE1hdGgucm91bmQocmdiWzFdKSwg
TWF0aC5yb3VuZChyZ2JbMl0pLCByZ2JbM11dOworICAgICAgICAKKyAgICAgICAgaWYgKHJnYlsz
XSA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Db2xvci5mcm9tUkdCLmFw
cGx5KHRoaXMsIHJvdW5kKTsKKyAgICAgICAgICAgIAorICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLkNvbG9yLmZyb21SR0JBLmFwcGx5KHRoaXMsIHJvdW5kKTsKKyAgICB9LAorICAgIAorICAg
IGdldCBjb2xvck5vU2F0VmFsKCkKKyAgICB7CisgICAgICAgIHZhciByZ2IgPSBXZWJJbnNwZWN0
b3IuU3BlY3RydW0uaHN2VG9SZ2IodGhpcy5oc3ZbMF0sIDEsIDEpOworICAgICAgICB2YXIgcm91
bmQgPSBbTWF0aC5yb3VuZChyZ2JbMF0pLCBNYXRoLnJvdW5kKHJnYlsxXSksIE1hdGgucm91bmQo
cmdiWzJdKSwgcmdiWzNdXTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
Q29sb3IuZnJvbVJHQkEuYXBwbHkodGhpcywgcm91bmQpOworICAgIH0sCisgICAgCisgICAgCisg
ICAgc2V0IGRpc3BsYXlUZXh0KHRleHQpIAorICAgIHsKKyAgICAgICAgdGhpcy5fZGlzcGxheUVs
ZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OworICAgIH0sIAorICAgIAorICAgIF9pc1Nob3duOiBm
YWxzZSwKKyAgICAKKyAgICBfb25jaGFuZ2U6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycygiY2hhbmdlIiwgdGhpcy5jb2xvcik7CisgICAgfSwKKyAg
ICAKKworICAgIF91cGRhdGVIZWxwZXJMb2NhdGlvbnM6IGZ1bmN0aW9uKCkgeworCisgICAgICAg
IHZhciBoID0gdGhpcy5oc3ZbMF07CisgICAgICAgIHZhciBzID0gdGhpcy5oc3ZbMV07CisgICAg
ICAgIHZhciB2ID0gdGhpcy5oc3ZbMl07CisgICAgICAgIAorICAgICAgICAvLyBXaGVyZSB0byBz
aG93IHRoZSBsaXR0bGUgY2lyY2xlIGluIHRoYXQgZGlzcGxheXMgeW91ciBjdXJyZW50IHNlbGVj
dGVkIGNvbG9yCisgICAgICAgIHZhciBkcmFnWCA9IHMgKiB0aGlzLmRyYWdXaWR0aDsKKyAgICAg
ICAgdmFyIGRyYWdZID0gdGhpcy5kcmFnSGVpZ2h0IC0gKHYgKiB0aGlzLmRyYWdIZWlnaHQpOwor
ICAgICAgICAKKyAgICAgICAgZHJhZ1ggPSBNYXRoLm1heCgKKyAgICAgICAgICAgIC10aGlzLl9k
cmFnSGVscGVyRWxlbWVudEhlaWdodCwgCisgICAgICAgICAgICBNYXRoLm1pbih0aGlzLmRyYWdX
aWR0aCAtIHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50SGVpZ2h0LCBkcmFnWCAtIHRoaXMuX2RyYWdI
ZWxwZXJFbGVtZW50SGVpZ2h0KQorICAgICAgICApOworICAgICAgICBkcmFnWSA9IE1hdGgubWF4
KAorICAgICAgICAgICAgLXRoaXMuX2RyYWdIZWxwZXJFbGVtZW50SGVpZ2h0LCAKKyAgICAgICAg
ICAgIE1hdGgubWluKHRoaXMuZHJhZ0hlaWdodCAtIHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50SGVp
Z2h0LCBkcmFnWSAtIHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50SGVpZ2h0KQorICAgICAgICApOwor
ICAgICAgICAKKyAgICAgICAgdGhpcy5fZHJhZ0hlbHBlckVsZW1lbnQucG9zaXRpb25BdChkcmFn
WCwgZHJhZ1kpOworICAgICAgICAKKyAgICAgICAgLy8gV2hlcmUgdG8gc2hvdyB0aGUgYmFyIHRo
YXQgZGlzcGxheXMgeW91ciBjdXJyZW50IHNlbGVjdGVkIGh1ZQorICAgICAgICB2YXIgc2xpZGVZ
ID0gKGggKiB0aGlzLnNsaWRlSGVpZ2h0KSAtIHRoaXMuc2xpZGVIZWxwZXJIZWlnaHQ7CisgICAg
ICAgIHRoaXMuc2xpZGVIZWxwZXIuc3R5bGUudG9wID0gc2xpZGVZICsgInB4IjsKKyAgICAgICAg
CisgICAgICAgIAorICAgICAgICB0aGlzLl9hbHBoYUVsZW1lbnQudmFsdWUgPSB0aGlzLmhzdlsz
XSAqIDEwMDsKKyAgICB9LAorICAgIAorICAgIF91cGRhdGVVSTogZnVuY3Rpb24oKSB7CisgICAg
CisgICAgICAgIHRoaXMuX3VwZGF0ZUhlbHBlckxvY2F0aW9ucygpOworICAgICAgICAKKyAgICAg
ICAgdmFyIHJnYiA9ICh0aGlzLmNvbG9yLnJnYmEgfHwgdGhpcy5jb2xvci5yZ2IpLnNsaWNlKDAp
OworICAgICAgICBpZiAocmdiLmxlbmd0aCA8IDQpCisgICAgICAgICAgICByZ2JbM10gPSAxOwor
ICAgICAgICAgICAgCisgICAgICAgIHZhciByZ2JOb1NhdFZhbCA9IHRoaXMuY29sb3JOb1NhdFZh
bC5yZ2I7CisgICAgICAgIAorICAgICAgICB2YXIgZmxhdENvbG9yID0gInJnYigiICsgcmdiTm9T
YXRWYWxbMF0gKyAiLCAiICsgcmdiTm9TYXRWYWxbMV0gKyAiLCAiICsgcmdiTm9TYXRWYWxbMl0g
KyAiKSI7CisgICAgICAgIHZhciBmdWxsQ29sb3IgPSAicmdiYSgiICsgcmdiWzBdICsgIiwgIiAr
IHJnYlsxXSArICIsICIgKyByZ2JbMl0gKyAiLCAiICsgcmdiWzNdICsgIikiOworICAgICAgICAK
KyAgICAgICAgdGhpcy5fZHJhZ2dlckVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gZmxh
dENvbG9yOworICAgICAgICB0aGlzLl9zd2F0Y2hTZWNvbmQuc3R5bGUuYmFja2dyb3VuZENvbG9y
ID0gZnVsbENvbG9yOworICAgICAgICAKKyAgICAgICAgdGhpcy5fYWxwaGFFbGVtZW50LnZhbHVl
ID0gdGhpcy5oc3ZbM10gKiAxMDA7CisgICAgfSwKKyAgICAKKyAgICB0b2dnbGU6IGZ1bmN0aW9u
KGVsZW1lbnQsIGNvbG9yKSB7CisgICAgICAgIGlmICh0aGlzLl9pc1Nob3duKSAKKyAgICAgICAg
ICAgIHRoaXMuaGlkZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLnNob3coZWxl
bWVudCwgY29sb3IpOworCQkKKwkJcmV0dXJuIHRoaXMuX2lzU2hvd247CisgICAgfSwKKyAgICAK
KyAgICBzaG93OiBmdW5jdGlvbihlbGVtZW50LCBjb2xvcikgeworICAgICAgICAKKyAgICAgICAg
aWYgKHRoaXMuX2lzU2hvd24pCisgICAgICAgICAgICB0aGlzLmhpZGUoKTsKKyAgICAgICAgICAg
ICAKKyAgICAgICAgdGhpcy5faXNTaG93biA9IHRydWU7CisgICAgICAgIHRoaXMuX3BvcG92ZXIu
c2hvdyh0aGlzLl9jb250YWluZXJFbGVtZW50LCBlbGVtZW50KTsKKyAgICAgICAgCisgICAgICAg
IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuaGlkZVByb3h5KTsK
KyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLmhpZGVQcm94eSk7
CisgICAgICAgIAorICAgICAgICB0aGlzLnNsaWRlSGVpZ2h0ID0gdGhpcy5fc2xpZGVyRWxlbWVu
dC5vZmZzZXRIZWlnaHQ7CisgICAgICAgIHRoaXMuZHJhZ1dpZHRoID0gdGhpcy5fZHJhZ2dlckVs
ZW1lbnQub2Zmc2V0V2lkdGg7CisgICAgICAgIHRoaXMuZHJhZ0hlaWdodCA9IHRoaXMuX2RyYWdn
ZXJFbGVtZW50Lm9mZnNldEhlaWdodDsKKyAgICAgICAgdGhpcy5fZHJhZ0hlbHBlckVsZW1lbnRI
ZWlnaHQgPSB0aGlzLl9kcmFnSGVscGVyRWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAg
ICB0aGlzLnNsaWRlSGVscGVySGVpZ2h0ID0gdGhpcy5zbGlkZUhlbHBlci5vZmZzZXRIZWlnaHQg
LyAyOworICAgICAgICAKKyAgICAgICAgdGhpcy5jb2xvciA9IGNvbG9yOworICAgICAgICB0aGlz
Ll91cGRhdGVVSSgpOworICAgICAgICAKKyAgICB9LAorICAgIAorICAgIGhpZGU6IGZ1bmN0aW9u
KCkgeworICAgIAorICAgICAgICB0aGlzLl9pc1Nob3duID0gZmFsc2U7CisgICAgICAgIHRoaXMu
X3BvcG92ZXIuaGlkZSgpOworICAgICAgICAKKyAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRM
aXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5oaWRlUHJveHkpOworICAgICAgICB3aW5kb3cucmVt
b3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuaGlkZVByb3h5KTsKKworICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygiaGlkZSIsIHRoaXMuY29sb3IpOworICAgICAgICAK
KyAgICAgICAgCisgICAgICAgIC8vIE9ubHkgd2FudCB0byBhbGxvdyBvbmUgaW5zdGFuY2UgdG8g
YmUgb3BlbiBhdCBhIHRpbWUsIHNvIGNsZWFyIG91dCBhbnkgCisgICAgICAgIC8vIGV4aXN0aW5n
IGV2ZW50IGxpc3RlbmVycworICAgICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygpOworICAg
IH0KK307CisKKworV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IDFjMzAxYmIu
Ljc3NjQ0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U3R5bGVzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtODksNiArODksOCBAQCBXZWJJbnNwZWN0b3Iu
U3R5bGVzU2lkZWJhclBhbmUgPSBmdW5jdGlvbihjb21wdXRlZFN0eWxlUGFuZSkKICAgICB0aGlz
Ll9zZWN0aW9uc0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAg
IHRoaXMuYm9keUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VjdGlvbnNDb250YWluZXIpOwog
CisgICAgdGhpcy5fc3BlY3RydW0gPSBuZXcgV2ViSW5zcGVjdG9yLlNwZWN0cnVtKHRoaXMuYm9k
eUVsZW1lbnQpOworICAgIAogICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5TdHlsZVNoZWV0Q2hhbmdlZCwg
dGhpcy5fc3R5bGVTaGVldENoYW5nZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5kb21BZ2Vu
dC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuQXR0ck1vZGlm
aWVkLCB0aGlzLl9hdHRyaWJ1dGVzTW9kaWZpZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5k
b21BZ2VudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuQXR0
clJlbW92ZWQsIHRoaXMuX2F0dHJpYnV0ZXNSZW1vdmVkLCB0aGlzKTsKQEAgLTE1MzMsNyArMTUz
NSw2IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLnZhbHVlRWxlbWVudCA9IHZhbHVlRWxlbWVudDsKIAogICAgICAgICB2
YXIgY2YgPSBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ29sb3JGb3JtYXQ7Ci0KICAg
ICAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAKQEAgLTE1
ODQsMzAgKzE1ODUsODIgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7CiAgICAgICAgICAg
ICAgICAgfQotCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdmFyIGhhc0NvbG9y
cGlja2VyID0gc2VsZi5fcGFyZW50UGFuZTsKKyAgICAgICAgICAgICAgICB2YXIgc3BlY3RydW0g
PSBoYXNDb2xvcnBpY2tlciAmJiBzZWxmLl9wYXJlbnRQYW5lLl9zcGVjdHJ1bTsKKyAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICB2YXIgc3dhdGNoRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LnRpdGxl
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbGljayB0byBjaGFuZ2UgY29sb3IgZm9ybWF0Iik7
CisgICAgICAgICAgICAgICAgdmFyIHN3YXRjaElubmVyRWxlbWVudCA9IHN3YXRjaEVsZW1lbnQu
Y3JlYXRlQ2hpbGQoInNwYW4iLCAic3dhdGNoLWlubmVyIik7CisgICAgICAgICAgICAgICAgaWYg
KGhhc0NvbG9ycGlja2VyKQorICAgICAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LnRpdGxl
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbGljayB0byBvcGVuIGEgY29sb3JwaWNrZXIiKTsK
KyAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5jbGFz
c05hbWUgPSAic3dhdGNoIjsKLSAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LnN0eWxlLnNl
dFByb3BlcnR5KCJiYWNrZ3JvdW5kLWNvbG9yIiwgdGV4dCk7Ci0KLSAgICAgICAgICAgICAgICBz
d2F0Y2hFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgY2hhbmdlQ29sb3JEaXNwbGF5
LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJkYmxjbGljayIsIGZ1bmN0aW9uKGV2ZW50KSB7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpIH0s
IGZhbHNlKTsKLQotICAgICAgICAgICAgICAgIHZhciBmb3JtYXQ7Ci0gICAgICAgICAgICAgICAg
dmFyIGZvcm1hdFNldHRpbmcgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY29sb3JGb3JtYXQuZ2V0
KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGZvcm1hdFNldHRpbmcgPT09IGNmLk9yaWdpbmFsKQot
ICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSBjZi5PcmlnaW5hbDsKLSAgICAgICAgICAgICAg
ICBlbHNlIGlmIChQcmVmZXJlbmNlcy5zaG93Q29sb3JOaWNrbmFtZXMgJiYgY29sb3Iubmlja25h
bWUpCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IGNmLk5pY2tuYW1lOwotICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGZvcm1hdFNldHRpbmcgPT09IGNmLlJHQikKLSAgICAgICAgICAgICAg
ICAgICAgZm9ybWF0ID0gKGNvbG9yLnNpbXBsZSA/IGNmLlJHQiA6IGNmLlJHQkEpOwotICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGZvcm1hdFNldHRpbmcgPT09IGNmLkhTTCkKLSAgICAgICAgICAg
ICAgICAgICAgZm9ybWF0ID0gKGNvbG9yLnNpbXBsZSA/IGNmLkhTTCA6IGNmLkhTTEEpOwotICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGNvbG9yLnNpbXBsZSkKLSAgICAgICAgICAgICAgICAgICAg
Zm9ybWF0ID0gKGNvbG9yLmhhc1Nob3J0SGV4KCkgPyBjZi5TaG9ydEhFWCA6IGNmLkhFWCk7Ci0g
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSBjZi5SR0JB
OwotCisgICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZWRvd24iLCBzdG9wUHJvcGFnYXRpb24sIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBzd2F0Y2hF
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgc3dhdGNoQ2xpY2ssIGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwg
c3RvcFByb3BhZ2F0aW9uLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgc3dhdGNoSW5uZXJFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCJiYWNrZ3JvdW5kLWNvbG9y
IiwgdGV4dCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gc3Bl
Y3RydW1DaGFuZ2UoZSkgeworICAgICAgICAgICAgICAgICAgICBjb2xvciA9IGUuZGF0YTsKKyAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHZhciBjb2xvclN0cmluZyA9
IGNvbG9yLnRvU3RyaW5nKGdldEZvcm1hdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgIGNvbG9yVmFsdWVFbGVtZW50LnRleHRDb250ZW50ID0gY29sb3JTdHJp
bmc7CisgICAgICAgICAgICAgICAgICAgIHNwZWN0cnVtLmRpc3BsYXlUZXh0ID0gY29sb3JTdHJp
bmc7CisgICAgICAgICAgICAgICAgICAgIHN3YXRjaElubmVyRWxlbWVudC5zdHlsZS5zZXRQcm9w
ZXJ0eSgiYmFja2dyb3VuZC1jb2xvciIsIGNvbG9yU3RyaW5nKTsKKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwbHlTdHlsZVRleHQobmFtZUVsZW1lbnQu
dGV4dENvbnRlbnQgKyAiOiAiICsgdmFsdWVFbGVtZW50LnRleHRDb250ZW50LCBmYWxzZSwgZmFs
c2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgZnVuY3Rpb24gc3BlY3RydW1IaWRlKCkgeworICAgICAgICAgICAgICAgICAgICBz
ZWxmLmFwcGx5U3R5bGVUZXh0KG5hbWVFbGVtZW50LnRleHRDb250ZW50ICsgIjogIiArIHZhbHVl
RWxlbWVudC50ZXh0Q29udGVudCwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpOworICAgICAgICAgICAgICAg
ICAgICBkZWxldGUgc2VsZi5fcGFyZW50UGFuZS5faXNFZGl0aW5nU3R5bGU7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uIHN3YXRjaENsaWNrKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgIC8vIEFsdCArIGNsaWNrIHRvZ2dsZXMgY29sb3IgZm9ybWF0cworICAg
ICAgICAgICAgICAgICAgICAvLyBDbGljayBvcGVucyBjb2xvcnBpY2tlciwgb25seSBpZiB0aGUg
ZWxlbWVudCBpcyBub3QgaW4gY29tcHV0ZWQgc3R5bGVzIHNlY3Rpb24pCisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoZS5hbHRLZXkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZUNvbG9yRGlzcGxheShlKTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChoYXNDb2xvcnBpY2tlcikgeworICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIGlzU2hvd24gPSBzcGVjdHJ1bS50b2dnbGUoc3dhdGNoRWxl
bWVudCwgY29sb3IpOworICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpc1Nob3duKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN0
cnVtLmRpc3BsYXlUZXh0ID0gY29sb3IudG9TdHJpbmcoZ2V0Rm9ybWF0KCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJlbnRQYW5lLl9pc0VkaXRpbmdTdHlsZSA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN0cnVtLmFkZEV2ZW50TGlzdGVu
ZXIoImNoYW5nZSIsIHNwZWN0cnVtQ2hhbmdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3BlY3RydW0uYWRkRXZlbnRMaXN0ZW5lcigiaGlkZSIsIHNwZWN0cnVtSGlkZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAgICB2YXIgZm9ybWF0ID0g
Z2V0Rm9ybWF0KCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZnVuY3Rpb24g
Z2V0Rm9ybWF0KCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybWF0OworICAgICAgICAg
ICAgICAgICAgICB2YXIgZm9ybWF0U2V0dGluZyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb2xv
ckZvcm1hdC5nZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdFNldHRpbmcgPT09
IGNmLk9yaWdpbmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuT3JpZ2lu
YWw7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFByZWZlcmVuY2VzLnNob3dDb2xvck5p
Y2tuYW1lcyAmJiBjb2xvci5uaWNrbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1h
dCA9IGNmLk5pY2tuYW1lOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3JtYXRTZXR0
aW5nID09PSBjZi5SR0IpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3Iu
c2ltcGxlID8gY2YuUkdCIDogY2YuUkdCQSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGZvcm1hdFNldHRpbmcgPT09IGNmLkhTTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1h
dCA9IChjb2xvci5zaW1wbGUgPyBjZi5IU0wgOiBjZi5IU0xBKTsKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoY29sb3Iuc2ltcGxlKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0
ID0gKGNvbG9yLmhhc1Nob3J0SGV4KCkgPyBjZi5TaG9ydEhFWCA6IGNmLkhFWCk7CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IGNmLlJH
QkE7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZvcm1hdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgdmFyIGNvbG9yVmFsdWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOwogICAgICAgICAgICAgICAgIGNvbG9yVmFsdWVFbGVtZW50LnRleHRDb250ZW50ID0gY29s
b3IudG9TdHJpbmcoZm9ybWF0KTsKIApAQCAtMTY1NCw2ICsxNzA3LDcgQEAgV2ViSW5zcGVjdG9y
LlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgCiAKICAgICAgICAgICAgICAgICBmdW5jdGlvbiBj
aGFuZ2VDb2xvckRpc3BsYXkoZXZlbnQpCiAgICAgICAgICAgICAgICAgewpAQCAtMTY2OSw2ICsx
NzIzLDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZURvY3Vt
ZW50RnJhZ21lbnQoKTsKICAgICAgICAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoc3dh
dGNoRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNvbG9y
VmFsdWVFbGVtZW50KTsKKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICByZXR1cm4g
Y29udGFpbmVyOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggMDViOGJiMS4uZjdhZWJhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtMTI3LDYgKzEyNyw3
IEBACiAgICAgPGZpbGU+U291cmNlSFRNTFRva2VuaXplci5qczwvZmlsZT4KICAgICA8ZmlsZT5T
b3VyY2VKYXZhU2NyaXB0VG9rZW5pemVyLmpzPC9maWxlPgogICAgIDxmaWxlPlNvdXJjZVRva2Vu
aXplci5qczwvZmlsZT4KKyAgICA8ZmlsZT5TcGVjdHJ1bS5qczwvZmlsZT4KICAgICA8ZmlsZT5T
dGF0dXNCYXJCdXR0b24uanM8L2ZpbGU+CiAgICAgPGZpbGU+U3R5bGVzU2lkZWJhclBhbmUuanM8
L2ZpbGU+CiAgICAgPGZpbGU+VGFiYmVkUGFuZS5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCAyZjM5MGI3Li5lOGQ0
OGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuY3NzCkBAIC0xNDI0LDYgKzE0MjQsMTAgQEAgbGkuZWRpdGluZyAuc3dhdGNoLCBsaS5lZGl0
aW5nIC5lbmFibGVkLWJ1dHRvbiwgIGxpLmVkaXRpbmctc3ViLXBhcnQgLmRlbGV0ZS1idXQKICAg
ICB3aWR0aDogMWVtOwogICAgIGhlaWdodDogMWVtOwogICAgIGJvcmRlcjogMXB4IHNvbGlkIHJn
YmEoMTI4LCAxMjgsIDEyOCwgMC42KTsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoSW1hZ2Vz
L2NoZWNrZXIucG5nKTsKK30KKy5zd2F0Y2gtaW5uZXIgeyAKKyAgICB3aWR0aDoxMDAlOyBoZWln
aHQ6MTAwJTsgZGlzcGxheTpibG9jazsgCiB9CiAKIC5zd2F0Y2g6aG92ZXIgewpAQCAtMjYzNiwz
ICsyNjQwLDEwMSBAQCBib2R5LnBsYXRmb3JtLW1hYyAjZHJhd2VyLXN0YXR1cy1iYXIgLnNlYXJj
aC1zdGF0dXMtYmFyLXByb2dyZXNzIHsKICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Owog
ICAgIGJvcmRlci13aWR0aDogMCAwIDExcHggMDsKIH0KKworCisvKgoraHR0cHM6Ly9naXRodWIu
Y29tL2Jncmlucy9zcGVjdHJ1bQorKi8KKy5zcGVjdHJ1bS1jb250YWluZXIgeyAKKyAgICBwb3Np
dGlvbjphYnNvbHV0ZTsgCisgICAgdG9wOjA7IAorICAgIGxlZnQ6MDsgCisgICAgZGlzcGxheTpp
bmxpbmUtYmxvY2s7CisgICAgYmFja2dyb3VuZDogcmdiYSgyMzAsIDIzMCwgMjMwLCAxKSAhaW1w
b3J0YW50OworICAgIGJvcmRlcjoxcHggc29saWQgIzY0NjQ2NDsKKyAgICBib3JkZXItcmFkaXVz
OjA7CisgICAgcGFkZGluZzogMTBweDsKKyAgICB3aWR0aDogMjAwcHg7CisJei1pbmRleDogMTA7
Cit9Cisuc3BlY3RydW0tdG9wIHsKKyAgcG9zaXRpb246cmVsYXRpdmU7IAorICB3aWR0aDogMTAw
JTsKKyAgZGlzcGxheTppbmxpbmUtYmxvY2s7Cit9Cisuc3BlY3RydW0tdG9wLWlubmVyIHsKKyAg
IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgbGVmdDowOyBib3R0b206MDsgcmlnaHQ6MDsKK30K
Ky5zcGVjdHJ1bS1jb2xvciB7IAorICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6MDts
ZWZ0OjA7Ym90dG9tOjA7cmlnaHQ6MjAlOworfQorLnNwZWN0cnVtLWh1ZSB7CisgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgIHRvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDo4MyU7Cit9Cisu
c3BlY3RydW0tZmlsbCB7IAorICAgIG1hcmdpbi10b3A6IDgwJTsgIC8qIFNhbWUgYXMgc3BlY3Ry
dW0tY29sb3Igd2lkdGggKi8KK30KKy5zcGVjdHJ1bS1zYXQsIC5zcGVjdHJ1bS12YWwgeyAKKyAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7IAorICAgIHRvcDowOyAKKyAgICBsZWZ0OjA7IAorICAgIHJp
Z2h0OjA7IAorICAgIGJvdHRvbTowOyAKK30KKworLnNwZWN0cnVtLXJhbmdlLWNvbnRhaW5lciB7
CisgICAgcG9zaXRpb246cmVsYXRpdmU7CisgICAgcGFkZGluZy10b3A6MTBweDsKK30KKy5zcGVj
dHJ1bS1yYW5nZS1jb250YWluZXIgKiB7CisgICAgZm9udC1zaXplOjlweDsKKyAgICB2ZXJ0aWNh
bC1hbGlnbjogbWlkZGxlOworfQorCisuc3BlY3RydW0tcmFuZ2UtY29udGFpbmVyIGxhYmVsIHsK
KyAgICB3aWR0aDogMzJweDsKKyAgICBkaXNwbGF5OmlubGluZS1ibG9jazsKK30KKy5zcGVjdHJ1
bS1yYW5nZS1jb250YWluZXIgaW5wdXQgeyAKKyAgICB3aWR0aDogMTMwcHg7IAorfQorLnN3YXRj
aCwgLnNwZWN0cnVtLWRyYWdnZXIsIC5zcGVjdHJ1bS1zbGlkZXIgeyAKKyAgICAtd2Via2l0LXVz
ZXItc2VsZWN0Om5vbmU7IHVzZXItc2VsZWN0OiBub25lOyAKK30KKworLnNwZWN0cnVtLXNhdCB7
CisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCwgI0ZG
RiwgcmdiYSgyMDQsIDE1NCwgMTI5LCAwKSk7CisgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFy
LWdyYWRpZW50KGxlZnQsICNGRkYsIHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpOworfQorLnNwZWN0
cnVtLXZhbCB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQo
Ym90dG9tLCAjMDAwMDAwLCByZ2JhKDIwNCwgMTU0LCAxMjksIDApKTsKKyAgICBiYWNrZ3JvdW5k
LWltYWdlOiBsaW5lYXItZ3JhZGllbnQoYm90dG9tLCAjMDAwMDAwLCByZ2JhKDIwNCwgMTU0LCAx
MjksIDApKTsKK30KKworLnNwZWN0cnVtLWh1ZSB7CisgICAgYmFja2dyb3VuZDogLXdlYmtpdC1s
aW5lYXItZ3JhZGllbnQodG9wLCAjZmYwMDAwIDAlLCAjZmZmZjAwIDE3JSwgIzAwZmYwMCAzMyUs
ICMwMGZmZmYgNTAlLCAjMDAwMGZmIDY3JSwgI2ZmMDBmZiA4MyUsICNmZjAwMDAgMTAwJSk7Cisg
ICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmMDAwMCAwJSwgI2ZmZmYwMCAx
NyUsICMwMGZmMDAgMzMlLCAjMDBmZmZmIDUwJSwgIzAwMDBmZiA2NyUsICNmZjAwZmYgODMlLCAj
ZmYwMDAwIDEwMCUpOworfQorCisuc3BlY3RydW0tZHJhZ2dlciB7CisgICBib3JkZXItcmFkaXVz
OiA1cHg7IAorICAgaGVpZ2h0OjVweDsgCisgICB3aWR0aDogNXB4OyAKKyAgIGJvcmRlcjogc29s
aWQgYmxhY2sgM3B4OworICAgY3Vyc29yOiBwb2ludGVyOworICAgcG9zaXRpb246YWJzb2x1dGU7
IAorICAgdG9wOjA7IAorICAgbGVmdDogMDsKK30KKy5zcGVjdHJ1bS1zbGlkZXIgeyAKKyAgICBw
b3NpdGlvbjogYWJzb2x1dGU7IAorICAgIHRvcDowOyAKKyAgICBjdXJzb3I6cG9pbnRlcjsKKyAg
ICBoZWlnaHQ6IDVweDsgCisgICAgd2lkdGg6IDExMCU7CisgICAgbWFyZ2luLWxlZnQ6IC01JTsK
KyAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsgCisgICAgb3BhY2l0eTogLjg7IAorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggNzEy
ZWFlYy4uNWZjMDYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sCkBAIC04MSw2ICs4MSw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQXBwbGljYXRpb25DYWNoZU1vZGVsLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJBcHBsaWNh
dGlvbkNhY2hlSXRlbXNWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJTY3JpcHQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNwZWN0cnVtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTaWRlYmFyUGFuZS5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRWxlbWVudHNUcmVlT3V0bGlu
ZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
RE9NUHJlc2VudGF0aW9uVXRpbHMuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwppbmRleCAyYmY2YWM2Li5jNDY2MWRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwpA
QCAtMjgzLDYgKzI4MywyOSBAQCBFbGVtZW50LnByb3RvdHlwZS50b3RhbE9mZnNldFRvcCA9IGZ1
bmN0aW9uKCkKICAgICByZXR1cm4gdG90YWw7CiB9CiAKK0VsZW1lbnQucHJvdG90eXBlLnRvdGFs
T2Zmc2V0ID0gZnVuY3Rpb24ocGFyZW50KSAKK3sKKyAgICB2YXIgdG90YWxMZWZ0ID0gdG90YWxU
b3AgPSAwOworICAgIGZvciAodmFyIGVsZW1lbnQgPSB0aGlzOyBlbGVtZW50ICYmIGVsZW1lbnQg
IT09IHBhcmVudDsgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgIHRv
dGFsTGVmdCArPSBlbGVtZW50Lm9mZnNldExlZnQgKyAodGhpcyAhPT0gZWxlbWVudCA/IGVsZW1l
bnQuY2xpZW50TGVmdCA6IDApOworICAgICAgICB0b3RhbFRvcCArPSBlbGVtZW50Lm9mZnNldFRv
cCArICh0aGlzICE9PSBlbGVtZW50ID8gZWxlbWVudC5jbGllbnRUb3AgOiAwKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHsgbGVmdDogdG90YWxMZWZ0LCB0b3A6IHRvdGFsVG9wIH07Cit9CisKK0VsZW1l
bnQucHJvdG90eXBlLnNjcm9sbE9mZnNldCA9IGZ1bmN0aW9uKCkgCit7CisgICAgdmFyIGN1cmxl
ZnQgPSBjdXJ0b3AgPSAwOworICAgIHZhciBlbCA9IHRoaXM7CisgICAgaWYgKGVsLm9mZnNldFBh
cmVudCkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBjdXJsZWZ0ICs9IGVsLnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICBjdXJ0b3AgKz0gZWwuc2Nyb2xsVG9wOworICAgICAgICB9IHdoaWxl
IChlbCA9IGVsLm9mZnNldFBhcmVudCk7CisgICAgfQorICAgIHJldHVybiB7IGxlZnQ6IGN1cmxl
ZnQsIHRvcDogY3VydG9wIH07Cit9CisKIEVsZW1lbnQucHJvdG90eXBlLm9mZnNldFJlbGF0aXZl
VG9XaW5kb3cgPSBmdW5jdGlvbih0YXJnZXRXaW5kb3cpCiB7CiAgICAgdmFyIGVsZW1lbnRPZmZz
ZXQgPSB7eDogMCwgeTogMH07CkBAIC04NjIsNiArODg1LDExIEBAIGZ1bmN0aW9uIGlzRW50ZXJL
ZXkoZXZlbnQpIHsKICAgICByZXR1cm4gZXZlbnQua2V5Q29kZSAhPT0gMjI5ICYmIGV2ZW50Lmtl
eUlkZW50aWZpZXIgPT09ICJFbnRlciI7CiB9CiAKK2Z1bmN0aW9uIHN0b3BQcm9wYWdhdGlvbihl
KSB7CisgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKK30KKworCiAvKioKICAqIEBwYXJhbSB7RWxl
bWVudH0gZWxlbWVudAogICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116391</attachid>
            <date>2011-11-23 12:03:59 -0800</date>
            <delta_ts>2011-11-27 16:36:52 -0800</delta_ts>
            <desc>Same as https://bug-71262-attachments.webkit.org/attachment.cgi?id=116365, but with latest master</desc>
            <filename>webinspector-colorpicker3.patch</filename>
            <type>text/plain</type>
            <size>34393</size>
            <attacher name="Brian Grinstead">briangrinstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkYzBjNGY4Li45YzEzODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcg
QEAKKworMjAxMS0xMS0yMyAgYmdyaW5zICA8YnJpYW5ncmluc3RlYWRAZ21haWwuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBjb2xvcnBpY2tlciBmdW5jdGlvbmFsaXR5IHRvIGNv
bG9yIHN3YXRjaGVzIGluIFN0eWxlcyBTaWRlYmFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTI2MgorCisgICAgICAgIHVwZGF0ZWQgY29tbWl0IGZv
ciBjb2xvcnBpY2tlciBmdW5jdGlvbmFsaXR5IGJhc2VkIG9uIGZlZWRiYWNrIGZyb20gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMjYyLiAgQ2hhbmdlcyBpbmNsdWRl
OiB1c2luZyBvbmx5IG9uZSBjb2xvcnBpY2tlciBmb3IgdGhlIHdob2xlIHN0eWxlcyBwYW5lbCwg
VUkgaW1wcm92ZW1lbnRzLCB3b3JraW5nIG9uIGVsZW1lbnQuc3R5bGUsIG5hdGl2ZSBXZWJLaXQu
Q29sb3Igd2l0aGluIHBsdWdpbiwgdXNlIHdlYmtpdCBzdHlsZSBmb3IgY29kZSwgdXBkYXRlIHBy
b2plY3QgcmVmZXJlbmNlcywgdXNlIHBvcG92ZXIgaW5zdGVhZCBvZiBjdXN0b20gbWVhc3VyZW1l
bnRzCisgICAgICAgIAorCVJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29sb3IuZnJvbVJHQik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3Bv
dmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBvcG92ZXIpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlBvcG92ZXIucHJvdG90eXBlLnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBv
cG92ZXIucHJvdG90eXBlLmhpZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJv
dG90eXBlLl9wb3NpdGlvbkVsZW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
U3BlY3RydW0uanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmh1ZURy
YWcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmNvbG9yRHJhZyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3BlY3RydW0uYWxwaGFEcmFnKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TcGVjdHJ1bSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uZ2V0U3dhdGNoRWxl
bWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uaHN2VG9SZ2IpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnJnYlRvSHN2KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TcGVjdHJ1bS5kcmFnZ2FibGUub25zdGFydCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3Bl
Y3RydW0uZHJhZ2dhYmxlLm9uc3RvcCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0u
ZHJhZ2dhYmxlLnZhcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxl
LnByZXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmRyYWdnYWJsZS5tb3Zl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUuc3RhcnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmRyYWdnYWJsZS5zdG9wKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNw
ZWN0cnVtLnByb3RvdHlwZS5zZXQgY29sb3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0
cnVtLnByb3RvdHlwZS5nZXQgY29sb3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVt
LnByb3RvdHlwZS5nZXQgY29sb3JOb1NhdFZhbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3Bl
Y3RydW0ucHJvdG90eXBlLnNldCBkaXNwbGF5VGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U3BlY3RydW0ucHJvdG90eXBlLl9pc1Nob3duLmZhbHNlLl9vbmNoYW5nZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLl91cGRhdGVIZWxwZXJMb2NhdGlvbnMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS5fdXBkYXRlVUkpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS50b2dnbGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuaGlkZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNT
aWRlYmFyUGFuZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVt
ZW50LnByb3RvdHlwZS51cGRhdGVUaXRsZS4pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5j
c3M6CisgICAgICAgICguc3dhdGNoKToKKyAgICAgICAgKC5zd2F0Y2gtaW5uZXIpOgorICAgICAg
ICAoLnNwZWN0cnVtLWNvbnRhaW5lcik6CisgICAgICAgICguc3BlY3RydW0tdG9wKToKKyAgICAg
ICAgKC5zcGVjdHJ1bS10b3AtaW5uZXIpOgorICAgICAgICAoLnNwZWN0cnVtLWNvbG9yKToKKyAg
ICAgICAgKC5zcGVjdHJ1bS1odWUpOgorICAgICAgICAoLnNwZWN0cnVtLWZpbGwpOgorICAgICAg
ICAoLnNwZWN0cnVtLXNhdCwgLnNwZWN0cnVtLXZhbCk6CisgICAgICAgICguc3BlY3RydW0tcmFu
Z2UtY29udGFpbmVyKToKKyAgICAgICAgKC5zcGVjdHJ1bS1yYW5nZS1jb250YWluZXIgKik6Cisg
ICAgICAgICguc3BlY3RydW0tcmFuZ2UtY29udGFpbmVyIGxhYmVsKToKKyAgICAgICAgKC5zcGVj
dHJ1bS1yYW5nZS1jb250YWluZXIgaW5wdXQpOgorICAgICAgICAoLnN3YXRjaCwgLnNwZWN0cnVt
LWRyYWdnZXIsIC5zcGVjdHJ1bS1zbGlkZXIpOgorICAgICAgICAoLnNwZWN0cnVtLXNhdCk6Cisg
ICAgICAgICguc3BlY3RydW0tdmFsKToKKyAgICAgICAgKC5zcGVjdHJ1bS1kcmFnZ2VyKToKKyAg
ICAgICAgKC5zcGVjdHJ1bS1zbGlkZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMu
anM6CisgICAgICAgIChzZXR1cFByb3RvdHlwZVV0aWxpdGllcy5FbGVtZW50LnByb3RvdHlwZS50
b3RhbE9mZnNldCk6CisgICAgICAgIChzZXR1cFByb3RvdHlwZVV0aWxpdGllcy5FbGVtZW50LnBy
b3RvdHlwZS5zY3JvbGxPZmZzZXQpOgorICAgICAgICAoKToKKyAgICAgICAgCiAyMDExLTExLTIz
ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQuIEJ1aWxkIGZpeC4gQWRkZWQgbWlzc2luZyBFTkFCTEUoV09SS0VSUykgZ3VhcmRzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IGI5YzdhZmYuLmI3MjJlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTY0MjAsNiArNjQyMCw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3Vy
Y2VIVE1MVG9rZW5pemVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Nv
dXJjZUphdmFTY3JpcHRUb2tlbml6ZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvU291cmNlVG9rZW5pemVyLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NwZWN0cnVtLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NwbGl0
Vmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TdGF0dXNCYXJCdXR0
b24uanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBh
bmUuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpp
bmRleCBhMWViNjY2Li5iMzcyZGMzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNjkyNDksNiArNjkyNDksMTAgQEAKIAkJCQkJPgogCQkJCTwv
RmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1l
bmRcU3BlY3RydW0uanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFNwbGl0Vmlldy5qcyIKIAkJCQkJPgog
CQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ29sb3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpz
CmluZGV4IDYyNTg4ZGYuLjVmYzI4NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ29sb3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db2xvci5qcwpAQCAtNDMsNiArNDMsMTAgQEAgV2ViSW5zcGVjdG9yLkNvbG9yLmZy
b21SR0JBID0gZnVuY3Rpb24ociwgZywgYiwgYSkKIHsKICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5Db2xvcigicmdiYSgiICsgciArICIsIiArIGcgKyAiLCIgKyBiICsgIiwiICsgKHR5cGVv
ZiBhID09PSAidW5kZWZpbmVkIiA/IDEgOiBhKSArICIpIik7CiB9CitXZWJJbnNwZWN0b3IuQ29s
b3IuZnJvbVJHQiA9IGZ1bmN0aW9uKHIsIGcsIGIpCit7CisgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuQ29sb3IoInJnYigiICsgciArICIsIiArIGcgKyAiLCIgKyBiICsgIikiKTsKK30KIAog
V2ViSW5zcGVjdG9yLkNvbG9yLnByb3RvdHlwZSA9IHsKICAgICBnZXQgc2hvcnRoZXgoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzCmluZGV4IDRiZmQ2
YTMuLjkwNzI5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUG9wb3Zlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Bv
cG92ZXIuanMKQEAgLTMyLDcgKzMyLDcgQEAKICAqIEBjb25zdHJ1Y3RvcgogICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuUG9wb3ZlckhlbHBlcj19IHBvcG92ZXJIZWxwZXIKICAqLwotV2ViSW5zcGVj
dG9yLlBvcG92ZXIgPSBmdW5jdGlvbihwb3BvdmVySGVscGVyKQorV2ViSW5zcGVjdG9yLlBvcG92
ZXIgPSBmdW5jdGlvbihwb3BvdmVySGVscGVyLCBhcHBlbmRFbGVtZW50LCBoaWRlT3ZlcmZsb3cp
CiB7CiAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJwb3BvdmVyIGN1c3RvbS1wb3B1cC12ZXJ0aWNh
bC1zY3JvbGwgY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIjsKQEAgLTQ1LDYgKzQ1LDEz
IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyID0gZnVuY3Rpb24ocG9wb3ZlckhlbHBlcikKICAgICB0
aGlzLl9jb250ZW50RGl2LmNsYXNzTmFtZSA9ICJjb250ZW50IjsKICAgICB0aGlzLl92aXNpYmxl
ID0gZmFsc2U7CiAgICAgdGhpcy5fcG9wb3ZlckhlbHBlciA9IHBvcG92ZXJIZWxwZXI7CisgICAg
CisgICAgdGhpcy5fYXBwZW5kRWxlbWVudCA9IGFwcGVuZEVsZW1lbnQgfHwgZG9jdW1lbnQuYm9k
eTsKKyAgICB0aGlzLl9oaWRlT3ZlcmZsb3cgPSBoaWRlT3ZlcmZsb3c7CisgICAgCisgICAgaWYg
KGhpZGVPdmVyZmxvdykgeworICAgICAgICB0aGlzLl9jb250ZW50RGl2LnN0eWxlLm92ZXJmbG93
ID0gImhpZGRlbiI7CisgICAgfQogfQogCiBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUg
PSB7CkBAIC01NiwxOCArNjMsMTggQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0g
ewogCiAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4sIGJ1dCB3ZSBoaWRlIHByZXZp
b3VzIHBvcHVwIHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUuCiAgICAgICAgIGlmIChXZWJJbnNwZWN0
b3IuUG9wb3Zlci5fcG9wb3ZlckVsZW1lbnQpCi0gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJl
bW92ZUNoaWxkKFdlYkluc3BlY3Rvci5Qb3BvdmVyLl9wb3BvdmVyRWxlbWVudCk7CisgICAgICAg
ICAgICB0aGlzLl9hcHBlbmRFbGVtZW50LnJlbW92ZUNoaWxkKFdlYkluc3BlY3Rvci5Qb3BvdmVy
Ll9wb3BvdmVyRWxlbWVudCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5Qb3BvdmVyLl9wb3BvdmVy
RWxlbWVudCA9IHRoaXMuZWxlbWVudDsKIAogICAgICAgICAvLyBUZW1wb3JhcmlseSBhdHRhY2gg
aW4gb3JkZXIgdG8gbWVhc3VyZSBwcmVmZXJyZWQgZGltZW5zaW9ucy4KICAgICAgICAgdGhpcy5j
b250ZW50RWxlbWVudC5wb3NpdGlvbkF0KDAsIDApOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKHRoaXMuY29udGVudEVsZW1lbnQpOworICAgICAgICB0aGlzLl9hcHBlbmRFbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuY29udGVudEVsZW1lbnQpOwogICAgICAgICBwcmVmZXJyZWRX
aWR0aCA9IHByZWZlcnJlZFdpZHRoIHx8IHRoaXMuY29udGVudEVsZW1lbnQub2Zmc2V0V2lkdGg7
CiAgICAgICAgIHByZWZlcnJlZEhlaWdodCA9IHByZWZlcnJlZEhlaWdodCB8fCB0aGlzLmNvbnRl
bnRFbGVtZW50Lm9mZnNldEhlaWdodDsKIAogICAgICAgICB0aGlzLl9jb250ZW50RGl2LmFwcGVu
ZENoaWxkKHRoaXMuY29udGVudEVsZW1lbnQpOwogICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fY29udGVudERpdik7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQodGhpcy5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5fYXBwZW5kRWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLmVsZW1lbnQpOwogICAgICAgICB0aGlzLl9wb3NpdGlvbkVsZW1lbnQoYW5jaG9yLCBw
cmVmZXJyZWRXaWR0aCwgcHJlZmVycmVkSGVpZ2h0KTsKICAgICAgICAgdGhpcy5fdmlzaWJsZSA9
IHRydWU7CiAgICAgICAgIGlmICh0aGlzLl9wb3BvdmVySGVscGVyKQpAQCAtNzgsNyArODUsNyBA
QCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAo
V2ViSW5zcGVjdG9yLlBvcG92ZXIuX3BvcG92ZXJFbGVtZW50KSB7CiAgICAgICAgICAgICBkZWxl
dGUgV2ViSW5zcGVjdG9yLlBvcG92ZXIuX3BvcG92ZXJFbGVtZW50OwotICAgICAgICAgICAgZG9j
dW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5f
YXBwZW5kRWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQpOwogICAgICAgICB9CiAgICAg
ICAgIHRoaXMuX3Zpc2libGUgPSBmYWxzZTsKICAgICB9LApAQCAtOTIsNyArOTksNyBAQCBXZWJJ
bnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fZGlzcG9zZWQ7CiAgICAgfSwKLQorICAgIAogICAgIGRpc3Bvc2U6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLnZpc2libGUpCkBAIC0xMDMsMTkgKzExMCwyNSBAQCBXZWJJ
bnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAgX3Bvc2l0aW9uRWxlbWVudDogZnVu
Y3Rpb24oYW5jaG9yRWxlbWVudCwgcHJlZmVycmVkV2lkdGgsIHByZWZlcnJlZEhlaWdodCkKICAg
ICB7CiAgICAgICAgIGNvbnN0IGJvcmRlcldpZHRoID0gMjU7Ci0gICAgICAgIGNvbnN0IHNjcm9s
bGVyV2lkdGggPSAxMTsKKyAgICAgICAgY29uc3Qgc2Nyb2xsZXJXaWR0aCA9IHRoaXMuX2hpZGVP
dmVyZmxvdyA/IDAgOiAxMTsKICAgICAgICAgY29uc3QgYXJyb3dIZWlnaHQgPSAxNTsKICAgICAg
ICAgY29uc3QgYXJyb3dPZmZzZXQgPSAxMDsKICAgICAgICAgY29uc3QgYm9yZGVyUmFkaXVzID0g
MTA7CiAKICAgICAgICAgLy8gU2tpbm55IHRvb2x0aXBzIGFyZSBub3QgcHJldHR5LCB0aGVpciBh
cnJvdyBsb2NhdGlvbiBpcyBub3QgbmljZS4KICAgICAgICAgcHJlZmVycmVkV2lkdGggPSBNYXRo
Lm1heChwcmVmZXJyZWRXaWR0aCwgNTApOwotICAgICAgICBjb25zdCB0b3RhbFdpZHRoID0gd2lu
ZG93LmlubmVyV2lkdGg7Ci0gICAgICAgIGNvbnN0IHRvdGFsSGVpZ2h0ID0gd2luZG93LmlubmVy
SGVpZ2h0OworICAgICAgICBjb25zdCB0b3RhbFdpZHRoID0gdGhpcy5fYXBwZW5kRWxlbWVudCA/
IHRoaXMuX2FwcGVuZEVsZW1lbnQuY2xpZW50V2lkdGggOiB3aW5kb3cuaW5uZXJXaWR0aDsKKyAg
ICAgICAgY29uc3QgdG90YWxIZWlnaHQgPSB0aGlzLl9hcHBlbmRFbGVtZW50ID8gdGhpcy5fYXBw
ZW5kRWxlbWVudC5jbGllbnRIZWlnaHQgOiB3aW5kb3cuaW5uZXJIZWlnaHQ7CiAKICAgICAgICAg
dmFyIGFuY2hvckJveCA9IGFuY2hvckVsZW1lbnQuYm94SW5XaW5kb3cod2luZG93KTsKICAgICAg
ICAgdmFyIG5ld0VsZW1lbnRQb3NpdGlvbiA9IHsgeDogMCwgeTogMCwgd2lkdGg6IHByZWZlcnJl
ZFdpZHRoICsgc2Nyb2xsZXJXaWR0aCwgaGVpZ2h0OiBwcmVmZXJyZWRIZWlnaHQgfTsKLQorICAg
ICAgICAKKyAgICAgICAgaWYgKHRoaXMuX2FwcGVuZEVsZW1lbnQpIHsKKyAgICAgICAgICAgIHZh
ciByZWxhdGl2ZU9mZnNldCA9IGFuY2hvckVsZW1lbnQudG90YWxPZmZzZXQodGhpcy5fYXBwZW5k
RWxlbWVudCk7CisgICAgICAgICAgICBhbmNob3JCb3gueCA9IHJlbGF0aXZlT2Zmc2V0LmxlZnQ7
CisgICAgICAgICAgICBhbmNob3JCb3gueSA9IHJlbGF0aXZlT2Zmc2V0LnRvcDsKKyAgICAgICAg
fQorICAgICAgICAKICAgICAgICAgdmFyIHZlcnRpY2FsQWxpZ25tZW50OwogICAgICAgICB2YXIg
cm9vbUFib3ZlID0gYW5jaG9yQm94Lnk7CiAgICAgICAgIHZhciByb29tQmVsb3cgPSB0b3RhbEhl
aWdodCAtIGFuY2hvckJveC55IC0gYW5jaG9yQm94LmhlaWdodDsKQEAgLTE2MCw3ICsxNzMsNyBA
QCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9w
b3B1cEFycm93RWxlbWVudC5zdHlsZS5sZWZ0ID0gTWF0aC5tYXgoMCwgYW5jaG9yQm94LnggLSBi
b3JkZXJSYWRpdXMgKiAyIC0gYXJyb3dPZmZzZXQpICsgInB4IjsKICAgICAgICAgICAgIHRoaXMu
X3BvcHVwQXJyb3dFbGVtZW50LnN0eWxlLmxlZnQgKz0gYW5jaG9yQm94LndpZHRoIC8gMjsKICAg
ICAgICAgfQotCisgICAgICAgIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gInBv
cG92ZXIgY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCBjdXN0b20tcG9wdXAtaG9yaXpvbnRh
bC1zY3JvbGwgIiArIHZlcnRpY2FsQWxpZ25tZW50ICsgIi0iICsgaG9yaXpvbnRhbEFsaWdubWVu
dCArICItYXJyb3ciOwogICAgICAgICB0aGlzLmVsZW1lbnQucG9zaXRpb25BdChuZXdFbGVtZW50
UG9zaXRpb24ueCAtIGJvcmRlcldpZHRoLCBuZXdFbGVtZW50UG9zaXRpb24ueSAtIGJvcmRlcldp
ZHRoKTsKICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoID0gbmV3RWxlbWVudFBvc2l0
aW9uLndpZHRoICsgYm9yZGVyV2lkdGggKiAyICsgInB4IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3BlY3RydW0uanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NwZWN0cnVtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmIwNGQ2ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NwZWN0cnVtLmpzCkBAIC0wLDAgKzEsMzYxIEBACisKK1dlYkluc3Bl
Y3Rvci5TcGVjdHJ1bSA9IGZ1bmN0aW9uKGNvbnRhaW5lcikKK3sKKyAgICB0aGlzLl9wb3BvdmVy
ID0gbmV3IFdlYkluc3BlY3Rvci5Qb3BvdmVyKG51bGwsIGNvbnRhaW5lciwgdHJ1ZSk7CisgICAg
dGhpcy5fcG9wb3Zlci5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHN0b3BQ
cm9wYWdhdGlvbiwgZmFsc2UpOworICAgIAorICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0aGlzLl9jb250YWluZXJFbGVtZW50
LmNsYXNzTmFtZSA9ICJzcGVjdHJ1bS1jb250YWluZXIiOworICAgIAorICAgIHZhciB0b3BFbGVt
ZW50ID0gdGhpcy5fY29udGFpbmVyRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVt
LXRvcCIpOworICAgIHRvcEVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJzcGVjdHJ1bS1maWxs
Iik7CisKKyAgICB2YXIgdG9wSW5uZXJFbGVtZW50ID0gdG9wRWxlbWVudC5jcmVhdGVDaGlsZCgi
ZGl2IiwgInNwZWN0cnVtLXRvcC1pbm5lciIpOworICAgIHRoaXMuX2RyYWdnZXJFbGVtZW50ID0g
dG9wSW5uZXJFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0tY29sb3IiKTsKKyAg
ICB0aGlzLl9kcmFnSGVscGVyRWxlbWVudCA9IHRoaXMuX2RyYWdnZXJFbGVtZW50LmNyZWF0ZUNo
aWxkKCJkaXYiLCAic3BlY3RydW0tc2F0IikuY3JlYXRlQ2hpbGQoImRpdiIsICJzcGVjdHJ1bS12
YWwiKS5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVtLWRyYWdnZXIiKTsKKyAgICAKKyAgICB0
aGlzLl9zbGlkZXJFbGVtZW50ID0gdG9wSW5uZXJFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAi
c3BlY3RydW0taHVlIik7CisgICAgdGhpcy5zbGlkZUhlbHBlciA9IHRoaXMuX3NsaWRlckVsZW1l
bnQuY3JlYXRlQ2hpbGQoImRpdiIsICJzcGVjdHJ1bS1zbGlkZXIiKTsKKyAgICAKKyAgICB2YXIg
cmFuZ2VDb250YWluZXIgPSB0aGlzLl9jb250YWluZXJFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYi
LCAic3BlY3RydW0tcmFuZ2UtY29udGFpbmVyIik7CisgICAgdmFyIGFscGhhTGFiZWwgPSByYW5n
ZUNvbnRhaW5lci5jcmVhdGVDaGlsZCgibGFiZWwiKTsKKyAgICBhbHBoYUxhYmVsLnRleHRDb250
ZW50ID0gImFscGhhOiAiOworICAgIAorICAgIHRoaXMuX2FscGhhRWxlbWVudCA9IHJhbmdlQ29u
dGFpbmVyLmNyZWF0ZUNoaWxkKCJpbnB1dCIsICJzcGVjdHJ1bS1yYW5nZSIpOworICAgIHRoaXMu
X2FscGhhRWxlbWVudC5zZXRBdHRyaWJ1dGUoInR5cGUiLCAicmFuZ2UiKTsKKyAgICB0aGlzLl9h
bHBoYUVsZW1lbnQuc2V0QXR0cmlidXRlKCJtaW4iLCAiMCIpOworICAgIHRoaXMuX2FscGhhRWxl
bWVudC5zZXRBdHRyaWJ1dGUoIm1heCIsICIxMDAiKTsKKyAgICB0aGlzLl9hbHBoYUVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgYWxwaGFEcmFnLmJpbmQodGhpcyksIGZhbHNlKTsK
KyAgICAKKyAgICAKKyAgICB2YXIgc3dhdGNoQ2xvbmUgPSBXZWJJbnNwZWN0b3IuU3BlY3RydW0u
Z2V0U3dhdGNoRWxlbWVudCgpOworICAgIHRoaXMuX3N3YXRjaFNlY29uZCA9IHN3YXRjaENsb25l
LnF1ZXJ5U2VsZWN0b3JBbGwoIi5zd2F0Y2gtaW5uZXIiKVswXTsKKyAgICAKKyAgICB2YXIgZGlz
cGxheUNvbnRhaW5lciA9IHJhbmdlQ29udGFpbmVyLmNyZWF0ZUNoaWxkKCJkaXYiKTsKKyAgICAK
KyAgICB2YXIgY29sb3JMYWJlbCA9IGRpc3BsYXlDb250YWluZXIuY3JlYXRlQ2hpbGQoImxhYmVs
Iik7CisgICAgY29sb3JMYWJlbC50ZXh0Q29udGVudCA9ICJjb2xvcjogIjsKKyAgICAKKyAgICBk
aXNwbGF5Q29udGFpbmVyLmFwcGVuZENoaWxkKHN3YXRjaENsb25lKTsKKyAgICAKKyAgICB0aGlz
Ll9kaXNwbGF5RWxlbWVudCA9IGRpc3BsYXlDb250YWluZXIuY3JlYXRlQ2hpbGQoInNwYW4iKTsK
KyAgICAKKyAgICBXZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxlKHRoaXMuX3NsaWRlckVs
ZW1lbnQsIGh1ZURyYWcuYmluZCh0aGlzKSk7CisgICAgV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmRy
YWdnYWJsZSh0aGlzLl9kcmFnZ2VyRWxlbWVudCwgY29sb3JEcmFnLmJpbmQodGhpcykpOworICAg
IAorICAgIC8vY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lckVsZW1lbnQpOwor
ICAgIAorICAgIGZ1bmN0aW9uIGh1ZURyYWcoZHJhZ1gsIGRyYWdZKSAKKyAgICB7CisgICAgICAg
IHRoaXMuaHN2WzBdID0gKGRyYWdZIC8gdGhpcy5zbGlkZUhlaWdodCk7CisgICAgICAgIAorICAg
ICAgICB0aGlzLl91cGRhdGVVSSgpOworICAgICAgICB0aGlzLl9vbmNoYW5nZSgpOyAgCisgICAg
fQorICAgIAorICAgIGZ1bmN0aW9uIGNvbG9yRHJhZyhkcmFnWCwgZHJhZ1kpIAorICAgIHsKKyAg
ICAgICAgdGhpcy5oc3ZbMV0gPSBkcmFnWCAvIHRoaXMuZHJhZ1dpZHRoOworICAgICAgICB0aGlz
LmhzdlsyXSA9ICh0aGlzLmRyYWdIZWlnaHQgLSBkcmFnWSkgLyB0aGlzLmRyYWdIZWlnaHQ7Cisg
ICAgICAgIAorICAgICAgICB0aGlzLl91cGRhdGVVSSgpOworICAgICAgICB0aGlzLl9vbmNoYW5n
ZSgpOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBhbHBoYURyYWcoKSAKKyAgICB7CisgICAg
ICAgIHRoaXMuaHN2WzNdID0gdGhpcy5fYWxwaGFFbGVtZW50LnZhbHVlIC8gMTAwOworICAgICAg
ICAKKyAgICAgICAgdGhpcy5fdXBkYXRlVUkoKTsKKyAgICAgICAgdGhpcy5fb25jaGFuZ2UoKTsK
KyAgICB9CisgICAgCisgICAgdGhpcy5oaWRlUHJveHkgPSB0aGlzLmhpZGUuYmluZCh0aGlzKTsK
K30KKworCitXZWJJbnNwZWN0b3IuU3BlY3RydW0uZ2V0U3dhdGNoRWxlbWVudCA9IGZ1bmN0aW9u
KCkgeworICAgIHZhciBzd2F0Y2hFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOworICAgIHN3YXRjaEVsZW1lbnQuY2xhc3NOYW1lID0gInN3YXRjaCI7CisgICAgc3dhdGNo
RWxlbWVudC5jcmVhdGVDaGlsZCgic3BhbiIsICJzd2F0Y2gtaW5uZXIiKTsKKyAgICByZXR1cm4g
c3dhdGNoRWxlbWVudDsKK30KKworV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmhzdlRvUmdiID0gZnVu
Y3Rpb24oaCwgcywgdiwgYSkgeworCisgICAgdmFyIHIsIGcsIGI7CisgICAgCisgICAgdmFyIGkg
PSBNYXRoLmZsb29yKGggKiA2KTsKKyAgICB2YXIgZiA9IGggKiA2IC0gaTsKKyAgICB2YXIgcCA9
IHYgKiAoMSAtIHMpOworICAgIHZhciBxID0gdiAqICgxIC0gZiAqIHMpOworICAgIHZhciB0ID0g
diAqICgxIC0gKDEgLSBmKSAqIHMpOworICAgIAorICAgIHN3aXRjaChpICUgNikgeworICAgIGNh
c2UgMDogCisgICAgICAgIHIgPSB2LCBnID0gdCwgYiA9IHA7IAorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIDE6IAorICAgICAgICByID0gcSwgZyA9IHYsIGIgPSBwOyAKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSAyOiAKKyAgICAgICAgciA9IHAsIGcgPSB2LCBiID0gdDsgCisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgMzogCisgICAgICAgIHIgPSBwLCBnID0gcSwgYiA9IHY7IAorICAgICAg
ICBicmVhazsKKyAgICBjYXNlIDQ6IAorICAgICAgICByID0gdCwgZyA9IHAsIGIgPSB2OyAKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSA1OiAKKyAgICAgICAgciA9IHYsIGcgPSBwLCBiID0gcTsg
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gW3IgKiAyNTUsIGcgKiAy
NTUsIGIgKiAyNTUsIGFdOworfTsKKworV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnJnYlRvSHN2ID0g
ZnVuY3Rpb24ociwgZywgYiwgYSkgeworCisgICAgciA9IHIgLyAyNTU7CisgICAgZyA9IGcgLyAy
NTU7CisgICAgYiA9IGIgLyAyNTU7CisgICAgCisgICAgdmFyIG1heCA9IE1hdGgubWF4KHIsIGcs
IGIpLCBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTsKKyAgICB2YXIgaCwgcywgdiA9IG1heDsKKwor
ICAgIHZhciBkID0gbWF4IC0gbWluOworICAgIHMgPSBtYXggPT0gMCA/IDAgOiBkIC8gbWF4Owor
CisgICAgaWYobWF4ID09IG1pbikgeworICAgICAgICAvLyBhY2hyb21hdGljCisgICAgICAgIGgg
PSAwOyAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN3aXRjaChtYXgpIHsKKyAgICAgICAg
Y2FzZSByOiAKKyAgICAgICAgICAgIGggPSAoZyAtIGIpIC8gZCArIChnIDwgYiA/IDYgOiAwKTsg
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBnOiAKKyAgICAgICAgICAgIGggPSAo
YiAtIHIpIC8gZCArIDI7IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgYjogCisg
ICAgICAgICAgICBoID0gKHIgLSBnKSAvIGQgKyA0OyAKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGggLz0gNjsKKyAgICB9CisgICAgcmV0dXJuIFtoLCBzLCB2LCBhXTsK
K307CisKK1dlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUgPSBmdW5jdGlvbihlbGVtZW50
LCBvbm1vdmUsIG9uc3RhcnQsIG9uc3RvcCkgeworCisgICAgb25tb3ZlID0gb25tb3ZlIHx8IGZ1
bmN0aW9uKCkgeyB9OworICAgIG9uc3RhcnQgPSBvbnN0YXJ0IHx8IGZ1bmN0aW9uKCkgeyB9Owor
ICAgIG9uc3RvcCA9IG9uc3RvcCB8fCBmdW5jdGlvbigpIHsgfTsKKyAgICAKKyAgICB2YXIgZG9j
ID0gZG9jdW1lbnQ7CisgICAgdmFyIGRyYWdnaW5nID0gZmFsc2U7CisgICAgdmFyIG9mZnNldCA9
IHsgfTsKKyAgICB2YXIgbWF4SGVpZ2h0ID0gMDsKKyAgICB2YXIgbWF4V2lkdGggPSAwOworCisg
ICAgZnVuY3Rpb24gcHJldmVudChlKSAKKyAgICB7CisgICAgICAgIGlmIChlLnN0b3BQcm9wYWdh
dGlvbikKKyAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgIAorICAgICAg
ICBpZiAoZS5wcmV2ZW50RGVmYXVsdCkKKyAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsK
KyAgICAgICAgICAgIAorICAgICAgICBlLnJldHVyblZhbHVlID0gZmFsc2U7CisgICAgfQorICAg
IAorICAgIGZ1bmN0aW9uIG1vdmUoZSkgCisgICAgeworICAgICAgICBpZiAoZHJhZ2dpbmcpIHsK
KyAgICAgICAgICAgIHZhciBkcmFnWCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGUucGFnZVggLSBv
ZmZzZXQubGVmdCArIHNjcm9sbE9mZnNldC5sZWZ0LCBtYXhXaWR0aCkpOworICAgICAgICAgICAg
dmFyIGRyYWdZID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oZS5wYWdlWSAtIG9mZnNldC50b3AgKyBz
Y3JvbGxPZmZzZXQudG9wLCBtYXhIZWlnaHQpKTsKKyAgICAgICAgICAgIG9ubW92ZS5hcHBseShl
bGVtZW50LCBbZHJhZ1gsIGRyYWdZXSk7IAorICAgICAgICB9IAorICAgIH0KKyAgICAKKyAgICBm
dW5jdGlvbiBzdGFydChlKSAKKyAgICB7IAorICAgICAgICB2YXIgcmlnaHRjbGljayA9IChlLndo
aWNoKSA/IChlLndoaWNoID09IDMpIDogKGUuYnV0dG9uID09IDIpOworICAgICAgICAKKyAgICAg
ICAgaWYgKCFyaWdodGNsaWNrICYmICFkcmFnZ2luZykgeyAKKyAgICAgICAgICAgIGlmIChvbnN0
YXJ0LmFwcGx5KGVsZW1lbnQsIGFyZ3VtZW50cykgIT09IGZhbHNlKSB7CisgICAgICAgICAgICAg
ICAgZHJhZ2dpbmcgPSB0cnVlOyAKKyAgICAgICAgICAgICAgICBtYXhIZWlnaHQgPSBlbGVtZW50
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgICAgICBtYXhXaWR0aCA9IGVsZW1lbnQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0ID0g
ZWxlbWVudC5zY3JvbGxPZmZzZXQoKTsKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBlbGVtZW50
LnRvdGFsT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIGRvYy5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RzdGFydCIsIHByZXZlbnQsIGZh
bHNlKTsKKyAgICAgICAgICAgICAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0Iiwg
cHJldmVudCwgZmFsc2UpOworICAgICAgICAgICAgICAgIGRvYy5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZW1vdmUiLCBtb3ZlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZG9jLmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNldXAiLCBzdG9wLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgcHJldmVudChlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICBmdW5jdGlvbiBzdG9wKCkgCisgICAgeyAKKyAgICAgICAgaWYgKGRyYWdnaW5nKSB7
IAorICAgICAgICAgICAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlbGVjdHN0YXJ0IiwgcHJl
dmVudCwgZmFsc2UpOworICAgICAgICAgICAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRyYWdz
dGFydCIsIHByZXZlbnQsIGZhbHNlKTsKKyAgICAgICAgICAgIGRvYy5yZW1vdmVFdmVudExpc3Rl
bmVyKCJtb3VzZW1vdmUiLCBtb3ZlLCBmYWxzZSk7CisgICAgICAgICAgICBkb2MucmVtb3ZlRXZl
bnRMaXN0ZW5lcigibW91c2V1cCIsIHN0b3AsIGZhbHNlKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgb25zdG9wLmFwcGx5KGVsZW1lbnQsIGFyZ3VtZW50cyk7IAorICAgICAgICB9CisgICAg
ICAgIGRyYWdnaW5nID0gZmFsc2U7IAorICAgIH0KKyAgICAKKyAgICBlbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoIm1vdXNlZG93biIsIHN0YXJ0LCBmYWxzZSk7Cit9OworCitXZWJJbnNwZWN0b3Iu
U3BlY3RydW0ucHJvdG90eXBlID0geworICAgIHNldCBjb2xvcihjb2xvcikKKyAgICB7CisgICAg
ICAgIHZhciByZ2JhID0gKGNvbG9yLnJnYmEgfHwgY29sb3IucmdiKS5zbGljZSgwKTsKKyAgICAg
ICAgaWYgKHJnYmEubGVuZ3RoIDwgNCkgeworICAgICAgICAgICAgcmdiYVszXSA9IDE7CisgICAg
ICAgIH0KKyAgICAgICAgdGhpcy5oc3YgPSBXZWJJbnNwZWN0b3IuU3BlY3RydW0ucmdiVG9Ic3Yo
cmdiYVswXSwgcmdiYVsxXSwgcmdiYVsyXSwgcmdiYVszXSk7CisgICAgfSwKKworICAgIGdldCBj
b2xvcigpCisgICAgeworICAgICAgICB2YXIgcmdiID0gV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmhz
dlRvUmdiKHRoaXMuaHN2WzBdLCB0aGlzLmhzdlsxXSwgdGhpcy5oc3ZbMl0sIHRoaXMuaHN2WzNd
KTsKKyAgICAgICAgdmFyIHJvdW5kID0gW01hdGgucm91bmQocmdiWzBdKSwgTWF0aC5yb3VuZChy
Z2JbMV0pLCBNYXRoLnJvdW5kKHJnYlsyXSksIHJnYlszXV07CisgICAgICAgIAorICAgICAgICBp
ZiAocmdiWzNdID09IDEpCisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkNvbG9yLmZy
b21SR0IuYXBwbHkodGhpcywgcm91bmQpOworICAgICAgICAgICAgCisgICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVJHQkEuYXBwbHkodGhpcywgcm91bmQpOworICAgIH0sCisg
ICAgCisgICAgZ2V0IGNvbG9yTm9TYXRWYWwoKQorICAgIHsKKyAgICAgICAgdmFyIHJnYiA9IFdl
Ykluc3BlY3Rvci5TcGVjdHJ1bS5oc3ZUb1JnYih0aGlzLmhzdlswXSwgMSwgMSk7CisgICAgICAg
IHZhciByb3VuZCA9IFtNYXRoLnJvdW5kKHJnYlswXSksIE1hdGgucm91bmQocmdiWzFdKSwgTWF0
aC5yb3VuZChyZ2JbMl0pLCByZ2JbM11dOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5Db2xvci5mcm9tUkdCQS5hcHBseSh0aGlzLCByb3VuZCk7CisgICAgfSwKKyAgICAK
KyAgICAKKyAgICBzZXQgZGlzcGxheVRleHQodGV4dCkgCisgICAgeworICAgICAgICB0aGlzLl9k
aXNwbGF5RWxlbWVudC50ZXh0Q29udGVudCA9IHRleHQ7CisgICAgfSwgCisgICAgCisgICAgX2lz
U2hvd246IGZhbHNlLAorICAgIAorICAgIF9vbmNoYW5nZTogZnVuY3Rpb24oKSB7CisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJjaGFuZ2UiLCB0aGlzLmNvbG9yKTsKKyAg
ICB9LAorICAgIAorCisgICAgX3VwZGF0ZUhlbHBlckxvY2F0aW9uczogZnVuY3Rpb24oKSB7CisK
KyAgICAgICAgdmFyIGggPSB0aGlzLmhzdlswXTsKKyAgICAgICAgdmFyIHMgPSB0aGlzLmhzdlsx
XTsKKyAgICAgICAgdmFyIHYgPSB0aGlzLmhzdlsyXTsKKyAgICAgICAgCisgICAgICAgIC8vIFdo
ZXJlIHRvIHNob3cgdGhlIGxpdHRsZSBjaXJjbGUgaW4gdGhhdCBkaXNwbGF5cyB5b3VyIGN1cnJl
bnQgc2VsZWN0ZWQgY29sb3IKKyAgICAgICAgdmFyIGRyYWdYID0gcyAqIHRoaXMuZHJhZ1dpZHRo
OworICAgICAgICB2YXIgZHJhZ1kgPSB0aGlzLmRyYWdIZWlnaHQgLSAodiAqIHRoaXMuZHJhZ0hl
aWdodCk7CisgICAgICAgIAorICAgICAgICBkcmFnWCA9IE1hdGgubWF4KAorICAgICAgICAgICAg
LXRoaXMuX2RyYWdIZWxwZXJFbGVtZW50SGVpZ2h0LCAKKyAgICAgICAgICAgIE1hdGgubWluKHRo
aXMuZHJhZ1dpZHRoIC0gdGhpcy5fZHJhZ0hlbHBlckVsZW1lbnRIZWlnaHQsIGRyYWdYIC0gdGhp
cy5fZHJhZ0hlbHBlckVsZW1lbnRIZWlnaHQpCisgICAgICAgICk7CisgICAgICAgIGRyYWdZID0g
TWF0aC5tYXgoCisgICAgICAgICAgICAtdGhpcy5fZHJhZ0hlbHBlckVsZW1lbnRIZWlnaHQsIAor
ICAgICAgICAgICAgTWF0aC5taW4odGhpcy5kcmFnSGVpZ2h0IC0gdGhpcy5fZHJhZ0hlbHBlckVs
ZW1lbnRIZWlnaHQsIGRyYWdZIC0gdGhpcy5fZHJhZ0hlbHBlckVsZW1lbnRIZWlnaHQpCisgICAg
ICAgICk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9kcmFnSGVscGVyRWxlbWVudC5wb3NpdGlv
bkF0KGRyYWdYLCBkcmFnWSk7CisgICAgICAgIAorICAgICAgICAvLyBXaGVyZSB0byBzaG93IHRo
ZSBiYXIgdGhhdCBkaXNwbGF5cyB5b3VyIGN1cnJlbnQgc2VsZWN0ZWQgaHVlCisgICAgICAgIHZh
ciBzbGlkZVkgPSAoaCAqIHRoaXMuc2xpZGVIZWlnaHQpIC0gdGhpcy5zbGlkZUhlbHBlckhlaWdo
dDsKKyAgICAgICAgdGhpcy5zbGlkZUhlbHBlci5zdHlsZS50b3AgPSBzbGlkZVkgKyAicHgiOwor
ICAgICAgICAKKyAgICAgICAgCisgICAgICAgIHRoaXMuX2FscGhhRWxlbWVudC52YWx1ZSA9IHRo
aXMuaHN2WzNdICogMTAwOworICAgIH0sCisgICAgCisgICAgX3VwZGF0ZVVJOiBmdW5jdGlvbigp
IHsKKyAgICAKKyAgICAgICAgdGhpcy5fdXBkYXRlSGVscGVyTG9jYXRpb25zKCk7CisgICAgICAg
IAorICAgICAgICB2YXIgcmdiID0gKHRoaXMuY29sb3IucmdiYSB8fCB0aGlzLmNvbG9yLnJnYiku
c2xpY2UoMCk7CisgICAgICAgIGlmIChyZ2IubGVuZ3RoIDwgNCkKKyAgICAgICAgICAgIHJnYlsz
XSA9IDE7CisgICAgICAgICAgICAKKyAgICAgICAgdmFyIHJnYk5vU2F0VmFsID0gdGhpcy5jb2xv
ck5vU2F0VmFsLnJnYjsKKyAgICAgICAgCisgICAgICAgIHZhciBmbGF0Q29sb3IgPSAicmdiKCIg
KyByZ2JOb1NhdFZhbFswXSArICIsICIgKyByZ2JOb1NhdFZhbFsxXSArICIsICIgKyByZ2JOb1Nh
dFZhbFsyXSArICIpIjsKKyAgICAgICAgdmFyIGZ1bGxDb2xvciA9ICJyZ2JhKCIgKyByZ2JbMF0g
KyAiLCAiICsgcmdiWzFdICsgIiwgIiArIHJnYlsyXSArICIsICIgKyByZ2JbM10gKyAiKSI7Cisg
ICAgICAgIAorICAgICAgICB0aGlzLl9kcmFnZ2VyRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29s
b3IgPSBmbGF0Q29sb3I7CisgICAgICAgIHRoaXMuX3N3YXRjaFNlY29uZC5zdHlsZS5iYWNrZ3Jv
dW5kQ29sb3IgPSBmdWxsQ29sb3I7CisgICAgICAgIAorICAgICAgICB0aGlzLl9hbHBoYUVsZW1l
bnQudmFsdWUgPSB0aGlzLmhzdlszXSAqIDEwMDsKKyAgICB9LAorICAgIAorICAgIHRvZ2dsZTog
ZnVuY3Rpb24oZWxlbWVudCwgY29sb3IpIHsKKyAgICAgICAgaWYgKHRoaXMuX2lzU2hvd24pIAor
ICAgICAgICAgICAgdGhpcy5oaWRlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMu
c2hvdyhlbGVtZW50LCBjb2xvcik7CisJCQorCQlyZXR1cm4gdGhpcy5faXNTaG93bjsKKyAgICB9
LAorICAgIAorICAgIHNob3c6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbG9yKSB7CisgICAgICAgIAor
ICAgICAgICBpZiAodGhpcy5faXNTaG93bikKKyAgICAgICAgICAgIHRoaXMuaGlkZSgpOworICAg
ICAgICAgICAgIAorICAgICAgICB0aGlzLl9pc1Nob3duID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5f
cG9wb3Zlci5zaG93KHRoaXMuX2NvbnRhaW5lckVsZW1lbnQsIGVsZW1lbnQpOworICAgICAgICAK
KyAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5oaWRl
UHJveHkpOworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuaGlk
ZVByb3h5KTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuc2xpZGVIZWlnaHQgPSB0aGlzLl9zbGlk
ZXJFbGVtZW50Lm9mZnNldEhlaWdodDsKKyAgICAgICAgdGhpcy5kcmFnV2lkdGggPSB0aGlzLl9k
cmFnZ2VyRWxlbWVudC5vZmZzZXRXaWR0aDsKKyAgICAgICAgdGhpcy5kcmFnSGVpZ2h0ID0gdGhp
cy5fZHJhZ2dlckVsZW1lbnQub2Zmc2V0SGVpZ2h0OworICAgICAgICB0aGlzLl9kcmFnSGVscGVy
RWxlbWVudEhlaWdodCA9IHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7
CisgICAgICAgIHRoaXMuc2xpZGVIZWxwZXJIZWlnaHQgPSB0aGlzLnNsaWRlSGVscGVyLm9mZnNl
dEhlaWdodCAvIDI7CisgICAgICAgIAorICAgICAgICB0aGlzLmNvbG9yID0gY29sb3I7CisgICAg
ICAgIHRoaXMuX3VwZGF0ZVVJKCk7CisgICAgICAgIAorICAgIH0sCisgICAgCisgICAgaGlkZTog
ZnVuY3Rpb24oKSB7CisgICAgCisgICAgICAgIHRoaXMuX2lzU2hvd24gPSBmYWxzZTsKKyAgICAg
ICAgdGhpcy5fcG9wb3Zlci5oaWRlKCk7CisgICAgICAgIAorICAgICAgICBkb2N1bWVudC5yZW1v
dmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLmhpZGVQcm94eSk7CisgICAgICAgIHdp
bmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcy5oaWRlUHJveHkpOworCisgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJoaWRlIiwgdGhpcy5jb2xvcik7Cisg
ICAgICAgIAorICAgICAgICAKKyAgICAgICAgLy8gT25seSB3YW50IHRvIGFsbG93IG9uZSBpbnN0
YW5jZSB0byBiZSBvcGVuIGF0IGEgdGltZSwgc28gY2xlYXIgb3V0IGFueSAKKyAgICAgICAgLy8g
ZXhpc3RpbmcgZXZlbnQgbGlzdGVuZXJzCisgICAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJz
KCk7CisgICAgfQorfTsKKworCitXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKaW5kZXgg
NGUzYjNhZi4uNThlYTRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCkBAIC04OSw2ICs4OSw4IEBAIFdlYklu
c3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKGNvbXB1dGVkU3R5bGVQYW5lKQog
ICAgIHRoaXMuX3NlY3Rpb25zQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CiAgICAgdGhpcy5ib2R5RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWN0aW9uc0NvbnRh
aW5lcik7CiAKKyAgICB0aGlzLl9zcGVjdHJ1bSA9IG5ldyBXZWJJbnNwZWN0b3IuU3BlY3RydW0o
dGhpcy5ib2R5RWxlbWVudCk7CisgICAgCiAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLlN0eWxlU2hlZXRD
aGFuZ2VkLCB0aGlzLl9zdHlsZVNoZWV0Q2hhbmdlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9y
LmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5B
dHRyTW9kaWZpZWQsIHRoaXMuX2F0dHJpYnV0ZXNNb2RpZmllZCwgdGhpcyk7CiAgICAgV2ViSW5z
cGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2
ZW50cy5BdHRyUmVtb3ZlZCwgdGhpcy5fYXR0cmlidXRlc1JlbW92ZWQsIHRoaXMpOwpAQCAtMTU4
MSw3ICsxNTgzLDYgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMudmFsdWVFbGVtZW50ID0gdmFsdWVFbGVtZW50OwogCiAg
ICAgICAgIHZhciBjZiA9IFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5Db2xvckZvcm1h
dDsKLQogICAgICAgICBpZiAodmFsdWUpIHsKICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsK
IApAQCAtMTYzMiwzMCArMTYzMyw4MiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTsKICAg
ICAgICAgICAgICAgICB9Ci0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB2YXIg
aGFzQ29sb3JwaWNrZXIgPSBzZWxmLl9wYXJlbnRQYW5lOworICAgICAgICAgICAgICAgIHZhciBz
cGVjdHJ1bSA9IGhhc0NvbG9ycGlja2VyICYmIHNlbGYuX3BhcmVudFBhbmUuX3NwZWN0cnVtOwor
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHZhciBzd2F0Y2hFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICAgICAgICAgIHN3YXRjaEVsZW1l
bnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsaWNrIHRvIGNoYW5nZSBjb2xvciBm
b3JtYXQiKTsKKyAgICAgICAgICAgICAgICB2YXIgc3dhdGNoSW5uZXJFbGVtZW50ID0gc3dhdGNo
RWxlbWVudC5jcmVhdGVDaGlsZCgic3BhbiIsICJzd2F0Y2gtaW5uZXIiKTsKKyAgICAgICAgICAg
ICAgICBpZiAoaGFzQ29sb3JwaWNrZXIpCisgICAgICAgICAgICAgICAgICAgIHN3YXRjaEVsZW1l
bnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsaWNrIHRvIG9wZW4gYSBjb2xvcnBp
Y2tlciIpOworICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzd2F0Y2hFbGVt
ZW50LmNsYXNzTmFtZSA9ICJzd2F0Y2giOwotICAgICAgICAgICAgICAgIHN3YXRjaEVsZW1lbnQu
c3R5bGUuc2V0UHJvcGVydHkoImJhY2tncm91bmQtY29sb3IiLCB0ZXh0KTsKLQotICAgICAgICAg
ICAgICAgIHN3YXRjaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBjaGFuZ2VDb2xv
ckRpc3BsYXksIGZhbHNlKTsKLSAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImRibGNsaWNrIiwgZnVuY3Rpb24oZXZlbnQpIHsgZXZlbnQuc3RvcFByb3BhZ2F0
aW9uKCkgfSwgZmFsc2UpOwotCi0gICAgICAgICAgICAgICAgdmFyIGZvcm1hdDsKLSAgICAgICAg
ICAgICAgICB2YXIgZm9ybWF0U2V0dGluZyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb2xvckZv
cm1hdC5nZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAoZm9ybWF0U2V0dGluZyA9PT0gY2YuT3Jp
Z2luYWwpCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IGNmLk9yaWdpbmFsOwotICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKFByZWZlcmVuY2VzLnNob3dDb2xvck5pY2tuYW1lcyAmJiBjb2xv
ci5uaWNrbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuTmlja25hbWU7Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0U2V0dGluZyA9PT0gY2YuUkdCKQotICAgICAg
ICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3Iuc2ltcGxlID8gY2YuUkdCIDogY2YuUkdCQSk7
Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0U2V0dGluZyA9PT0gY2YuSFNMKQotICAg
ICAgICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3Iuc2ltcGxlID8gY2YuSFNMIDogY2YuSFNM
QSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoY29sb3Iuc2ltcGxlKQotICAgICAgICAgICAg
ICAgICAgICBmb3JtYXQgPSAoY29sb3IuaGFzU2hvcnRIZXgoKSA/IGNmLlNob3J0SEVYIDogY2Yu
SEVYKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9
IGNmLlJHQkE7Ci0KKyAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlZG93biIsIHN0b3BQcm9wYWdhdGlvbiwgZmFsc2UpOworICAgICAgICAgICAgICAg
IHN3YXRjaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBzd2F0Y2hDbGljaywgZmFs
c2UpOworICAgICAgICAgICAgICAgIHN3YXRjaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZGJs
Y2xpY2siLCBzdG9wUHJvcGFnYXRpb24sIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBzd2F0Y2hJbm5lckVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoImJhY2tncm91
bmQtY29sb3IiLCB0ZXh0KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmdW5j
dGlvbiBzcGVjdHJ1bUNoYW5nZShlKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gZS5k
YXRhOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNvbG9y
U3RyaW5nID0gY29sb3IudG9TdHJpbmcoZ2V0Rm9ybWF0KCkpOworICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgY29sb3JWYWx1ZUVsZW1lbnQudGV4dENvbnRlbnQgPSBj
b2xvclN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgc3BlY3RydW0uZGlzcGxheVRleHQgPSBj
b2xvclN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgc3dhdGNoSW5uZXJFbGVtZW50LnN0eWxl
LnNldFByb3BlcnR5KCJiYWNrZ3JvdW5kLWNvbG9yIiwgY29sb3JTdHJpbmcpOworICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseVN0eWxlVGV4dChuYW1l
RWxlbWVudC50ZXh0Q29udGVudCArICI6ICIgKyB2YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQsIGZh
bHNlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBmdW5jdGlvbiBzcGVjdHJ1bUhpZGUoKSB7CisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuYXBwbHlTdHlsZVRleHQobmFtZUVsZW1lbnQudGV4dENvbnRlbnQgKyAiOiAi
ICsgdmFsdWVFbGVtZW50LnRleHRDb250ZW50LCB0cnVlLCB0cnVlLCBmYWxzZSk7CisgICAgICAg
ICAgICAgICAgICAgIGRlbGV0ZSBzZWxmLl9wYXJlbnRQYW5lLl9pc0VkaXRpbmdTdHlsZTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgZnVuY3Rpb24gc3dhdGNoQ2xpY2soZSkgeworICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgLy8gQWx0ICsgY2xpY2sgdG9nZ2xlcyBjb2xvciBmb3Jt
YXRzCisgICAgICAgICAgICAgICAgICAgIC8vIENsaWNrIG9wZW5zIGNvbG9ycGlja2VyLCBvbmx5
IGlmIHRoZSBlbGVtZW50IGlzIG5vdCBpbiBjb21wdXRlZCBzdHlsZXMgc2VjdGlvbikKKyAgICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChlLmFsdEtleSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlQ29sb3JEaXNwbGF5KGUpOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGhhc0NvbG9ycGlja2VyKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXNTaG93biA9IHNwZWN0cnVtLnRvZ2dsZShz
d2F0Y2hFbGVtZW50LCBjb2xvcik7CisgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGlzU2hvd24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3BlY3RydW0uZGlzcGxheVRleHQgPSBjb2xvci50b1N0cmluZyhnZXRGb3JtYXQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudFBhbmUuX2lzRWRpdGluZ1N0
eWxlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3RydW0uYWRkRXZl
bnRMaXN0ZW5lcigiY2hhbmdlIiwgc3BlY3RydW1DaGFuZ2UpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzcGVjdHJ1bS5hZGRFdmVudExpc3RlbmVyKCJoaWRlIiwgc3BlY3RydW1IaWRl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgIHZhciBm
b3JtYXQgPSBnZXRGb3JtYXQoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBm
dW5jdGlvbiBnZXRGb3JtYXQoKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBmb3JtYXQ7Cisg
ICAgICAgICAgICAgICAgICAgIHZhciBmb3JtYXRTZXR0aW5nID0gV2ViSW5zcGVjdG9yLnNldHRp
bmdzLmNvbG9yRm9ybWF0LmdldCgpOworICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybWF0U2V0
dGluZyA9PT0gY2YuT3JpZ2luYWwpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSBj
Zi5PcmlnaW5hbDsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoUHJlZmVyZW5jZXMuc2hv
d0NvbG9yTmlja25hbWVzICYmIGNvbG9yLm5pY2tuYW1lKQorICAgICAgICAgICAgICAgICAgICAg
ICAgZm9ybWF0ID0gY2YuTmlja25hbWU7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZv
cm1hdFNldHRpbmcgPT09IGNmLlJHQikKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9
IChjb2xvci5zaW1wbGUgPyBjZi5SR0IgOiBjZi5SR0JBKTsKKyAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoZm9ybWF0U2V0dGluZyA9PT0gY2YuSFNMKQorICAgICAgICAgICAgICAgICAgICAg
ICAgZm9ybWF0ID0gKGNvbG9yLnNpbXBsZSA/IGNmLkhTTCA6IGNmLkhTTEEpOworICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChjb2xvci5zaW1wbGUpCisgICAgICAgICAgICAgICAgICAgICAg
ICBmb3JtYXQgPSAoY29sb3IuaGFzU2hvcnRIZXgoKSA/IGNmLlNob3J0SEVYIDogY2YuSEVYKTsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0
ID0gY2YuUkdCQTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZm9ybWF0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICB2YXIgY29sb3JWYWx1ZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzcGFuIik7CiAgICAgICAgICAgICAgICAgY29sb3JWYWx1ZUVsZW1lbnQudGV4dENvbnRl
bnQgPSBjb2xvci50b1N0cmluZyhmb3JtYXQpOwogCkBAIC0xNzAyLDYgKzE3NTUsNyBAQCBXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKIAogICAgICAgICAgICAgICAgIGZ1
bmN0aW9uIGNoYW5nZUNvbG9yRGlzcGxheShldmVudCkKICAgICAgICAgICAgICAgICB7CkBAIC0x
NzE3LDYgKzE3NzEsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3Jl
YXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRD
aGlsZChzd2F0Y2hFbGVtZW50KTsKICAgICAgICAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hp
bGQoY29sb3JWYWx1ZUVsZW1lbnQpOworICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IHJldHVybiBjb250YWluZXI7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCA2MTQyYWYzLi4yNWNmM2RhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0xMjYs
NiArMTI2LDcgQEAKICAgICA8ZmlsZT5Tb3VyY2VIVE1MVG9rZW5pemVyLmpzPC9maWxlPgogICAg
IDxmaWxlPlNvdXJjZUphdmFTY3JpcHRUb2tlbml6ZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+U291
cmNlVG9rZW5pemVyLmpzPC9maWxlPgorICAgIDxmaWxlPlNwZWN0cnVtLmpzPC9maWxlPgogICAg
IDxmaWxlPlNwbGl0Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5TdGF0dXNCYXJCdXR0b24uanM8
L2ZpbGU+CiAgICAgPGZpbGU+U3R5bGVzU2lkZWJhclBhbmUuanM8L2ZpbGU+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKaW5kZXggOGNlMzYw
OS4uYTkxMjBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmNzcwpAQCAtMTQyOSw2ICsxNDI5LDEwIEBAIGxpLmVkaXRpbmcgLnN3YXRjaCwg
bGkuZWRpdGluZyAuZW5hYmxlZC1idXR0b24sICBsaS5lZGl0aW5nLXN1Yi1wYXJ0IC5kZWxldGUt
YnV0CiAgICAgd2lkdGg6IDFlbTsKICAgICBoZWlnaHQ6IDFlbTsKICAgICBib3JkZXI6IDFweCBz
b2xpZCByZ2JhKDEyOCwgMTI4LCAxMjgsIDAuNik7CisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJs
KEltYWdlcy9jaGVja2VyLnBuZyk7Cit9Cisuc3dhdGNoLWlubmVyIHsgCisgICAgd2lkdGg6MTAw
JTsgaGVpZ2h0OjEwMCU7IGRpc3BsYXk6YmxvY2s7IAogfQogCiAuc3dhdGNoOmhvdmVyIHsKQEAg
LTI2NTYsMyArMjY2MCwxMDEgQEAgYm9keS5wbGF0Zm9ybS1tYWMgI2RyYXdlci1zdGF0dXMtYmFy
IC5zZWFyY2gtc3RhdHVzLWJhci1wcm9ncmVzcyB7CiAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3Bh
cmVudDsKICAgICBib3JkZXItd2lkdGg6IDAgMCAxMXB4IDA7CiB9CisKKworLyoKK2h0dHBzOi8v
Z2l0aHViLmNvbS9iZ3JpbnMvc3BlY3RydW0KKyovCisuc3BlY3RydW0tY29udGFpbmVyIHsgCisg
ICAgcG9zaXRpb246YWJzb2x1dGU7IAorICAgIHRvcDowOyAKKyAgICBsZWZ0OjA7IAorICAgIGRp
c3BsYXk6aW5saW5lLWJsb2NrOworICAgIGJhY2tncm91bmQ6IHJnYmEoMjMwLCAyMzAsIDIzMCwg
MSkgIWltcG9ydGFudDsKKyAgICBib3JkZXI6MXB4IHNvbGlkICM2NDY0NjQ7CisgICAgYm9yZGVy
LXJhZGl1czowOworICAgIHBhZGRpbmc6IDEwcHg7CisgICAgd2lkdGg6IDIwMHB4OworCXotaW5k
ZXg6IDEwOworfQorLnNwZWN0cnVtLXRvcCB7CisgIHBvc2l0aW9uOnJlbGF0aXZlOyAKKyAgd2lk
dGg6IDEwMCU7CisgIGRpc3BsYXk6aW5saW5lLWJsb2NrOworfQorLnNwZWN0cnVtLXRvcC1pbm5l
ciB7CisgICBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IGxlZnQ6MDsgYm90dG9tOjA7IHJpZ2h0
OjA7Cit9Cisuc3BlY3RydW0tY29sb3IgeyAKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
dG9wOjA7bGVmdDowO2JvdHRvbTowO3JpZ2h0OjIwJTsKK30KKy5zcGVjdHJ1bS1odWUgeworICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6ODMl
OworfQorLnNwZWN0cnVtLWZpbGwgeyAKKyAgICBtYXJnaW4tdG9wOiA4MCU7ICAvKiBTYW1lIGFz
IHNwZWN0cnVtLWNvbG9yIHdpZHRoICovCit9Cisuc3BlY3RydW0tc2F0LCAuc3BlY3RydW0tdmFs
IHsgCisgICAgcG9zaXRpb246IGFic29sdXRlOyAKKyAgICB0b3A6MDsgCisgICAgbGVmdDowOyAK
KyAgICByaWdodDowOyAKKyAgICBib3R0b206MDsgCit9CisKKy5zcGVjdHJ1bS1yYW5nZS1jb250
YWluZXIgeworICAgIHBvc2l0aW9uOnJlbGF0aXZlOworICAgIHBhZGRpbmctdG9wOjEwcHg7Cit9
Cisuc3BlY3RydW0tcmFuZ2UtY29udGFpbmVyICogeworICAgIGZvbnQtc2l6ZTo5cHg7CisgICAg
dmVydGljYWwtYWxpZ246IG1pZGRsZTsKK30KKworLnNwZWN0cnVtLXJhbmdlLWNvbnRhaW5lciBs
YWJlbCB7CisgICAgd2lkdGg6IDMycHg7CisgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7Cit9Cisu
c3BlY3RydW0tcmFuZ2UtY29udGFpbmVyIGlucHV0IHsgCisgICAgd2lkdGg6IDEzMHB4OyAKK30K
Ky5zd2F0Y2gsIC5zcGVjdHJ1bS1kcmFnZ2VyLCAuc3BlY3RydW0tc2xpZGVyIHsgCisgICAgLXdl
YmtpdC11c2VyLXNlbGVjdDpub25lOyB1c2VyLXNlbGVjdDogbm9uZTsgCit9CisKKy5zcGVjdHJ1
bS1zYXQgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxl
ZnQsICNGRkYsIHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpOworICAgIGJhY2tncm91bmQtaW1hZ2U6
IGxpbmVhci1ncmFkaWVudChsZWZ0LCAjRkZGLCByZ2JhKDIwNCwgMTU0LCAxMjksIDApKTsKK30K
Ky5zcGVjdHJ1bS12YWwgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdy
YWRpZW50KGJvdHRvbSwgIzAwMDAwMCwgcmdiYSgyMDQsIDE1NCwgMTI5LCAwKSk7CisgICAgYmFj
a2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KGJvdHRvbSwgIzAwMDAwMCwgcmdiYSgyMDQs
IDE1NCwgMTI5LCAwKSk7Cit9CisKKy5zcGVjdHJ1bS1odWUgeworICAgIGJhY2tncm91bmQ6IC13
ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmMDAwMCAwJSwgI2ZmZmYwMCAxNyUsICMwMGZm
MDAgMzMlLCAjMDBmZmZmIDUwJSwgIzAwMDBmZiA2NyUsICNmZjAwZmYgODMlLCAjZmYwMDAwIDEw
MCUpOworICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0b3AsICNmZjAwMDAgMCUsICNm
ZmZmMDAgMTclLCAjMDBmZjAwIDMzJSwgIzAwZmZmZiA1MCUsICMwMDAwZmYgNjclLCAjZmYwMGZm
IDgzJSwgI2ZmMDAwMCAxMDAlKTsKK30KKworLnNwZWN0cnVtLWRyYWdnZXIgeworICAgYm9yZGVy
LXJhZGl1czogNXB4OyAKKyAgIGhlaWdodDo1cHg7IAorICAgd2lkdGg6IDVweDsgCisgICBib3Jk
ZXI6IHNvbGlkIGJsYWNrIDNweDsKKyAgIGN1cnNvcjogcG9pbnRlcjsKKyAgIHBvc2l0aW9uOmFi
c29sdXRlOyAKKyAgIHRvcDowOyAKKyAgIGxlZnQ6IDA7Cit9Cisuc3BlY3RydW0tc2xpZGVyIHsg
CisgICAgcG9zaXRpb246IGFic29sdXRlOyAKKyAgICB0b3A6MDsgCisgICAgY3Vyc29yOnBvaW50
ZXI7CisgICAgaGVpZ2h0OiA1cHg7IAorICAgIHdpZHRoOiAxMTAlOworICAgIG1hcmdpbi1sZWZ0
OiAtNSU7CisgICAgYmFja2dyb3VuZDogd2hpdGU7IAorICAgIG9wYWNpdHk6IC44OyAKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0
bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmlu
ZGV4IDc3MGY0MDIuLjUwZWM5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtODEsNiArODEsNyBAQCBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkFwcGxpY2F0aW9uQ2FjaGVNb2Rl
bC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
QXBwbGljYXRpb25DYWNoZUl0ZW1zVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2NyaXB0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTcGVjdHJ1bS5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2lkZWJhclBhbmUuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkVsZW1lbnRzVHJl
ZU91dGxpbmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9IkRPTVByZXNlbnRhdGlvblV0aWxzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKaW5kZXggNTBmMjg2OS4uNzIx
NDU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGls
aXRpZXMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRp
ZXMuanMKQEAgLTI4MSw2ICsyODEsMjkgQEAgRWxlbWVudC5wcm90b3R5cGUudG90YWxPZmZzZXRU
b3AgPSBmdW5jdGlvbigpCiAgICAgcmV0dXJuIHRvdGFsOwogfQogCitFbGVtZW50LnByb3RvdHlw
ZS50b3RhbE9mZnNldCA9IGZ1bmN0aW9uKHBhcmVudCkgCit7CisgICAgdmFyIHRvdGFsTGVmdCA9
IHRvdGFsVG9wID0gMDsKKyAgICBmb3IgKHZhciBlbGVtZW50ID0gdGhpczsgZWxlbWVudCAmJiBl
bGVtZW50ICE9PSBwYXJlbnQ7IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICB0b3RhbExlZnQgKz0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgKHRoaXMgIT09IGVsZW1lbnQg
PyBlbGVtZW50LmNsaWVudExlZnQgOiAwKTsKKyAgICAgICAgdG90YWxUb3AgKz0gZWxlbWVudC5v
ZmZzZXRUb3AgKyAodGhpcyAhPT0gZWxlbWVudCA/IGVsZW1lbnQuY2xpZW50VG9wIDogMCk7Cisg
ICAgfQorICAgIHJldHVybiB7IGxlZnQ6IHRvdGFsTGVmdCwgdG9wOiB0b3RhbFRvcCB9OworfQor
CitFbGVtZW50LnByb3RvdHlwZS5zY3JvbGxPZmZzZXQgPSBmdW5jdGlvbigpIAoreworICAgIHZh
ciBjdXJsZWZ0ID0gY3VydG9wID0gMDsKKyAgICB2YXIgZWwgPSB0aGlzOworICAgIGlmIChlbC5v
ZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgY3VybGVmdCArPSBlbC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgY3VydG9wICs9IGVsLnNjcm9sbFRvcDsKKyAgICAgICAg
fSB3aGlsZSAoZWwgPSBlbC5vZmZzZXRQYXJlbnQpOworICAgIH0KKyAgICByZXR1cm4geyBsZWZ0
OiBjdXJsZWZ0LCB0b3A6IGN1cnRvcCB9OworfQorCiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICog
QHBhcmFtIHtudW1iZXI9fSB4CkBAIC0yOTksNiArMzIyLDcgQEAgZnVuY3Rpb24gQW5jaG9yQm94
KHgsIHksIHdpZHRoLCBoZWlnaHQpCiAvKioKICAqIEByZXR1cm4ge0FuY2hvckJveH0KICAqLwor
IAogRWxlbWVudC5wcm90b3R5cGUub2Zmc2V0UmVsYXRpdmVUb1dpbmRvdyA9IGZ1bmN0aW9uKHRh
cmdldFdpbmRvdykKIHsKICAgICB2YXIgZWxlbWVudE9mZnNldCA9IG5ldyBBbmNob3JCb3goKTsK
QEAgLTg3Nyw2ICs5MDEsMTEgQEAgZnVuY3Rpb24gaXNFbnRlcktleShldmVudCkgewogICAgIHJl
dHVybiBldmVudC5rZXlDb2RlICE9PSAyMjkgJiYgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkVu
dGVyIjsKIH0KIAorZnVuY3Rpb24gc3RvcFByb3BhZ2F0aW9uKGUpIHsKKyAgICBlLnN0b3BQcm9w
YWdhdGlvbigpOworfQorCisKIC8qKgogICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50CiAgKiBA
cGFyYW0ge251bWJlcn0gb2Zmc2V0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116686</attachid>
            <date>2011-11-27 16:36:52 -0800</date>
            <delta_ts>2011-11-29 18:27:58 -0800</delta_ts>
            <desc>Updating whitespace / webkit style</desc>
            <filename>colorpicker3.patch</filename>
            <type>text/plain</type>
            <size>31018</size>
            <attacher name="Brian Grinstead">briangrinstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBiOWM3YWZmLi5iNzIyZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC02NDIwLDYgKzY0MjAsNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU291
cmNlSFRNTFRva2VuaXplci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9T
b3VyY2VKYXZhU2NyaXB0VG9rZW5pemVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL1NvdXJjZVRva2VuaXplci5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9TcGVjdHJ1bS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TcGxp
dFZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU3RhdHVzQmFyQnV0
dG9uLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQ
YW5lLmpzJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
aW5kZXggYTFlYjY2Ni4uYjM3MmRjMyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY5MjQ5LDYgKzY5MjQ5LDEwIEBACiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQt
ZW5kXFNwZWN0cnVtLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJl
bGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxTcGxpdFZpZXcuanMiCiAJCQkJCT4K
IAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0NvbG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db2xvci5q
cwppbmRleCA2MjU4OGRmLi41ZmMyODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQ29sb3IuanMKQEAgLTQzLDYgKzQzLDEwIEBAIFdlYkluc3BlY3Rvci5Db2xvci5m
cm9tUkdCQSA9IGZ1bmN0aW9uKHIsIGcsIGIsIGEpCiB7CiAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuQ29sb3IoInJnYmEoIiArIHIgKyAiLCIgKyBnICsgIiwiICsgYiArICIsIiArICh0eXBl
b2YgYSA9PT0gInVuZGVmaW5lZCIgPyAxIDogYSkgKyAiKSIpOwogfQorV2ViSW5zcGVjdG9yLkNv
bG9yLmZyb21SR0IgPSBmdW5jdGlvbihyLCBnLCBiKQoreworICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLkNvbG9yKCJyZ2IoIiArIHIgKyAiLCIgKyBnICsgIiwiICsgYiArICIpIik7Cit9CiAK
IFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IHNob3J0aGV4KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qcwppbmRleCA0YmZk
NmEzLi43ZDRmNjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1BvcG92ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Q
b3BvdmVyLmpzCkBAIC0zMiw3ICszMiw3IEBACiAgKiBAY29uc3RydWN0b3IKICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLlBvcG92ZXJIZWxwZXI9fSBwb3BvdmVySGVscGVyCiAgKi8KLVdlYkluc3Bl
Y3Rvci5Qb3BvdmVyID0gZnVuY3Rpb24ocG9wb3ZlckhlbHBlcikKK1dlYkluc3BlY3Rvci5Qb3Bv
dmVyID0gZnVuY3Rpb24ocG9wb3ZlckhlbHBlciwgYXBwZW5kRWxlbWVudCwgaGlkZU92ZXJmbG93
KQogewogICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwog
ICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgPSAicG9wb3ZlciBjdXN0b20tcG9wdXAtdmVydGlj
YWwtc2Nyb2xsIGN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCI7CkBAIC00NSw2ICs0NSwx
MyBAQCBXZWJJbnNwZWN0b3IuUG9wb3ZlciA9IGZ1bmN0aW9uKHBvcG92ZXJIZWxwZXIpCiAgICAg
dGhpcy5fY29udGVudERpdi5jbGFzc05hbWUgPSAiY29udGVudCI7CiAgICAgdGhpcy5fdmlzaWJs
ZSA9IGZhbHNlOwogICAgIHRoaXMuX3BvcG92ZXJIZWxwZXIgPSBwb3BvdmVySGVscGVyOworICAg
IAorICAgIHRoaXMuX2FwcGVuZEVsZW1lbnQgPSBhcHBlbmRFbGVtZW50IHx8IGRvY3VtZW50LmJv
ZHk7CisgICAgdGhpcy5faGlkZU92ZXJmbG93ID0gaGlkZU92ZXJmbG93OworICAgIAorICAgIGlm
IChoaWRlT3ZlcmZsb3cpIHsKKyAgICAgICAgdGhpcy5fY29udGVudERpdi5zdHlsZS5vdmVyZmxv
dyA9ICJoaWRkZW4iOworICAgIH0KIH0KIAogV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBl
ID0gewpAQCAtNTYsMTggKzYzLDE4IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgd2UgaGlkZSBwcmV2
aW91cyBwb3B1cCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlLgogICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLlBvcG92ZXIuX3BvcG92ZXJFbGVtZW50KQotICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5y
ZW1vdmVDaGlsZChXZWJJbnNwZWN0b3IuUG9wb3Zlci5fcG9wb3ZlckVsZW1lbnQpOworICAgICAg
ICAgICAgdGhpcy5fYXBwZW5kRWxlbWVudC5yZW1vdmVDaGlsZChXZWJJbnNwZWN0b3IuUG9wb3Zl
ci5fcG9wb3ZlckVsZW1lbnQpOwogICAgICAgICBXZWJJbnNwZWN0b3IuUG9wb3Zlci5fcG9wb3Zl
ckVsZW1lbnQgPSB0aGlzLmVsZW1lbnQ7CiAKICAgICAgICAgLy8gVGVtcG9yYXJpbHkgYXR0YWNo
IGluIG9yZGVyIHRvIG1lYXN1cmUgcHJlZmVycmVkIGRpbWVuc2lvbnMuCiAgICAgICAgIHRoaXMu
Y29udGVudEVsZW1lbnQucG9zaXRpb25BdCgwLCAwKTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZCh0aGlzLmNvbnRlbnRFbGVtZW50KTsKKyAgICAgICAgdGhpcy5fYXBwZW5kRWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnRFbGVtZW50KTsKICAgICAgICAgcHJlZmVycmVk
V2lkdGggPSBwcmVmZXJyZWRXaWR0aCB8fCB0aGlzLmNvbnRlbnRFbGVtZW50Lm9mZnNldFdpZHRo
OwogICAgICAgICBwcmVmZXJyZWRIZWlnaHQgPSBwcmVmZXJyZWRIZWlnaHQgfHwgdGhpcy5jb250
ZW50RWxlbWVudC5vZmZzZXRIZWlnaHQ7CiAKICAgICAgICAgdGhpcy5fY29udGVudERpdi5hcHBl
bmRDaGlsZCh0aGlzLmNvbnRlbnRFbGVtZW50KTsKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX2NvbnRlbnREaXYpOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKHRoaXMuZWxlbWVudCk7CisgICAgICAgIHRoaXMuX2FwcGVuZEVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5lbGVtZW50KTsKICAgICAgICAgdGhpcy5fcG9zaXRpb25FbGVtZW50KGFuY2hvciwg
cHJlZmVycmVkV2lkdGgsIHByZWZlcnJlZEhlaWdodCk7CiAgICAgICAgIHRoaXMuX3Zpc2libGUg
PSB0cnVlOwogICAgICAgICBpZiAodGhpcy5fcG9wb3ZlckhlbHBlcikKQEAgLTc4LDcgKzg1LDcg
QEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYg
KFdlYkluc3BlY3Rvci5Qb3BvdmVyLl9wb3BvdmVyRWxlbWVudCkgewogICAgICAgICAgICAgZGVs
ZXRlIFdlYkluc3BlY3Rvci5Qb3BvdmVyLl9wb3BvdmVyRWxlbWVudDsKLSAgICAgICAgICAgIGRv
Y3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMu
X2FwcGVuZEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTsKICAgICAgICAgfQogICAg
ICAgICB0aGlzLl92aXNpYmxlID0gZmFsc2U7CiAgICAgfSwKQEAgLTEwMywxOSArMTEwLDI1IEBA
IFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKICAgICBfcG9zaXRpb25FbGVtZW50
OiBmdW5jdGlvbihhbmNob3JFbGVtZW50LCBwcmVmZXJyZWRXaWR0aCwgcHJlZmVycmVkSGVpZ2h0
KQogICAgIHsKICAgICAgICAgY29uc3QgYm9yZGVyV2lkdGggPSAyNTsKLSAgICAgICAgY29uc3Qg
c2Nyb2xsZXJXaWR0aCA9IDExOworICAgICAgICBjb25zdCBzY3JvbGxlcldpZHRoID0gdGhpcy5f
aGlkZU92ZXJmbG93ID8gMCA6IDExOwogICAgICAgICBjb25zdCBhcnJvd0hlaWdodCA9IDE1Owog
ICAgICAgICBjb25zdCBhcnJvd09mZnNldCA9IDEwOwogICAgICAgICBjb25zdCBib3JkZXJSYWRp
dXMgPSAxMDsKIAogICAgICAgICAvLyBTa2lubnkgdG9vbHRpcHMgYXJlIG5vdCBwcmV0dHksIHRo
ZWlyIGFycm93IGxvY2F0aW9uIGlzIG5vdCBuaWNlLgogICAgICAgICBwcmVmZXJyZWRXaWR0aCA9
IE1hdGgubWF4KHByZWZlcnJlZFdpZHRoLCA1MCk7Ci0gICAgICAgIGNvbnN0IHRvdGFsV2lkdGgg
PSB3aW5kb3cuaW5uZXJXaWR0aDsKLSAgICAgICAgY29uc3QgdG90YWxIZWlnaHQgPSB3aW5kb3cu
aW5uZXJIZWlnaHQ7CisgICAgICAgIGNvbnN0IHRvdGFsV2lkdGggPSB0aGlzLl9hcHBlbmRFbGVt
ZW50ID8gdGhpcy5fYXBwZW5kRWxlbWVudC5jbGllbnRXaWR0aCA6IHdpbmRvdy5pbm5lcldpZHRo
OworICAgICAgICBjb25zdCB0b3RhbEhlaWdodCA9IHRoaXMuX2FwcGVuZEVsZW1lbnQgPyB0aGlz
Ll9hcHBlbmRFbGVtZW50LmNsaWVudEhlaWdodCA6IHdpbmRvdy5pbm5lckhlaWdodDsKIAogICAg
ICAgICB2YXIgYW5jaG9yQm94ID0gYW5jaG9yRWxlbWVudC5ib3hJbldpbmRvdyh3aW5kb3cpOwog
ICAgICAgICB2YXIgbmV3RWxlbWVudFBvc2l0aW9uID0geyB4OiAwLCB5OiAwLCB3aWR0aDogcHJl
ZmVycmVkV2lkdGggKyBzY3JvbGxlcldpZHRoLCBoZWlnaHQ6IHByZWZlcnJlZEhlaWdodCB9Owot
CisgICAgICAgIAorICAgICAgICBpZiAodGhpcy5fYXBwZW5kRWxlbWVudCkgeworICAgICAgICAg
ICAgdmFyIHJlbGF0aXZlT2Zmc2V0ID0gYW5jaG9yRWxlbWVudC50b3RhbE9mZnNldCh0aGlzLl9h
cHBlbmRFbGVtZW50KTsKKyAgICAgICAgICAgIGFuY2hvckJveC54ID0gcmVsYXRpdmVPZmZzZXQu
bGVmdDsKKyAgICAgICAgICAgIGFuY2hvckJveC55ID0gcmVsYXRpdmVPZmZzZXQudG9wOworICAg
ICAgICB9CisgICAgICAgIAogICAgICAgICB2YXIgdmVydGljYWxBbGlnbm1lbnQ7CiAgICAgICAg
IHZhciByb29tQWJvdmUgPSBhbmNob3JCb3gueTsKICAgICAgICAgdmFyIHJvb21CZWxvdyA9IHRv
dGFsSGVpZ2h0IC0gYW5jaG9yQm94LnkgLSBhbmNob3JCb3guaGVpZ2h0OwpAQCAtMTYwLDcgKzE3
Myw2IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRo
aXMuX3BvcHVwQXJyb3dFbGVtZW50LnN0eWxlLmxlZnQgPSBNYXRoLm1heCgwLCBhbmNob3JCb3gu
eCAtIGJvcmRlclJhZGl1cyAqIDIgLSBhcnJvd09mZnNldCkgKyAicHgiOwogICAgICAgICAgICAg
dGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuc3R5bGUubGVmdCArPSBhbmNob3JCb3gud2lkdGggLyAy
OwogICAgICAgICB9Ci0KICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJwb3BvdmVy
IGN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Ny
b2xsICIgKyB2ZXJ0aWNhbEFsaWdubWVudCArICItIiArIGhvcml6b250YWxBbGlnbm1lbnQgKyAi
LWFycm93IjsKICAgICAgICAgdGhpcy5lbGVtZW50LnBvc2l0aW9uQXQobmV3RWxlbWVudFBvc2l0
aW9uLnggLSBib3JkZXJXaWR0aCwgbmV3RWxlbWVudFBvc2l0aW9uLnkgLSBib3JkZXJXaWR0aCk7
CiAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IG5ld0VsZW1lbnRQb3NpdGlvbi53
aWR0aCArIGJvcmRlcldpZHRoICogMiArICJweCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NwZWN0cnVtLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TcGVjdHJ1bS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5kMmViYTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TcGVjdHJ1bS5qcwpAQCAtMCwwICsxLDM3MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBCcmlhbiBHcmluc3RlYWQgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworIAorV2ViSW5zcGVj
dG9yLlNwZWN0cnVtID0gZnVuY3Rpb24oY29udGFpbmVyKQoreworICAgIHRoaXMuX3BvcG92ZXIg
PSBuZXcgV2ViSW5zcGVjdG9yLlBvcG92ZXIobnVsbCwgY29udGFpbmVyLCB0cnVlKTsKKyAgICB0
aGlzLl9wb3BvdmVyLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgc3RvcFBy
b3BhZ2F0aW9uLCBmYWxzZSk7CisgICAgCisgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQu
Y2xhc3NOYW1lID0gInNwZWN0cnVtLWNvbnRhaW5lciI7CisgICAgCisgICAgdmFyIHRvcEVsZW1l
bnQgPSB0aGlzLl9jb250YWluZXJFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0t
dG9wIik7CisgICAgdG9wRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVtLWZpbGwi
KTsKKworICAgIHZhciB0b3BJbm5lckVsZW1lbnQgPSB0b3BFbGVtZW50LmNyZWF0ZUNoaWxkKCJk
aXYiLCAic3BlY3RydW0tdG9wLWlubmVyIik7CisgICAgdGhpcy5fZHJhZ2dlckVsZW1lbnQgPSB0
b3BJbm5lckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJzcGVjdHJ1bS1jb2xvciIpOworICAg
IHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50ID0gdGhpcy5fZHJhZ2dlckVsZW1lbnQuY3JlYXRlQ2hp
bGQoImRpdiIsICJzcGVjdHJ1bS1zYXQiKS5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVtLXZh
bCIpLmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0tZHJhZ2dlciIpOworICAgIAorICAgIHRo
aXMuX3NsaWRlckVsZW1lbnQgPSB0b3BJbm5lckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJz
cGVjdHJ1bS1odWUiKTsKKyAgICB0aGlzLnNsaWRlSGVscGVyID0gdGhpcy5fc2xpZGVyRWxlbWVu
dC5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVtLXNsaWRlciIpOworICAgIAorICAgIHZhciBy
YW5nZUNvbnRhaW5lciA9IHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIs
ICJzcGVjdHJ1bS1yYW5nZS1jb250YWluZXIiKTsKKyAgICB2YXIgYWxwaGFMYWJlbCA9IHJhbmdl
Q29udGFpbmVyLmNyZWF0ZUNoaWxkKCJsYWJlbCIpOworICAgIGFscGhhTGFiZWwudGV4dENvbnRl
bnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoImFscGhhIikgKyAiOiAiOworICAgIAorICAgIHRo
aXMuX2FscGhhRWxlbWVudCA9IHJhbmdlQ29udGFpbmVyLmNyZWF0ZUNoaWxkKCJpbnB1dCIsICJz
cGVjdHJ1bS1yYW5nZSIpOworICAgIHRoaXMuX2FscGhhRWxlbWVudC5zZXRBdHRyaWJ1dGUoInR5
cGUiLCAicmFuZ2UiKTsKKyAgICB0aGlzLl9hbHBoYUVsZW1lbnQuc2V0QXR0cmlidXRlKCJtaW4i
LCAiMCIpOworICAgIHRoaXMuX2FscGhhRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1heCIsICIxMDAi
KTsKKyAgICB0aGlzLl9hbHBoYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgYWxw
aGFEcmFnLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAKKyAgICB2YXIgc3dhdGNoRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBzd2F0Y2hFbGVtZW50LmNsYXNz
TmFtZSA9ICJzd2F0Y2giOworICAgIHN3YXRjaEVsZW1lbnQuY3JlYXRlQ2hpbGQoInNwYW4iLCAi
c3dhdGNoLWlubmVyIik7CisgICAgCisgICAgdGhpcy5fc3dhdGNoSW5uZXJFbGVtZW50ID0gc3dh
dGNoRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuc3dhdGNoLWlubmVyIilbMF07CisgICAgCisg
ICAgdmFyIGRpc3BsYXlDb250YWluZXIgPSByYW5nZUNvbnRhaW5lci5jcmVhdGVDaGlsZCgiZGl2
Iik7CisgICAgCisgICAgdmFyIGNvbG9yTGFiZWwgPSBkaXNwbGF5Q29udGFpbmVyLmNyZWF0ZUNo
aWxkKCJsYWJlbCIpOworICAgIGNvbG9yTGFiZWwudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoImNvbG9yIikgKyAiOiAiOworICAgIAorICAgIGRpc3BsYXlDb250YWluZXIuYXBw
ZW5kQ2hpbGQoc3dhdGNoRWxlbWVudCk7CisgICAgCisgICAgdGhpcy5fZGlzcGxheUVsZW1lbnQg
PSBkaXNwbGF5Q29udGFpbmVyLmNyZWF0ZUNoaWxkKCJzcGFuIik7CisgICAgCisgICAgV2ViSW5z
cGVjdG9yLlNwZWN0cnVtLmRyYWdnYWJsZSh0aGlzLl9zbGlkZXJFbGVtZW50LCBodWVEcmFnLmJp
bmQodGhpcykpOworICAgIFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUodGhpcy5fZHJh
Z2dlckVsZW1lbnQsIGNvbG9yRHJhZy5iaW5kKHRoaXMpKTsKKyAgICAKKyAgICBmdW5jdGlvbiBo
dWVEcmFnKGRyYWdYLCBkcmFnWSkgCisgICAgeworICAgICAgICB0aGlzLmhzdlswXSA9IChkcmFn
WSAvIHRoaXMuc2xpZGVIZWlnaHQpOworICAgICAgICAKKyAgICAgICAgdGhpcy5fb25jaGFuZ2Uo
KTsgIAorICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBjb2xvckRyYWcoZHJhZ1gsIGRyYWdZKSAK
KyAgICB7CisgICAgICAgIHRoaXMuaHN2WzFdID0gZHJhZ1ggLyB0aGlzLmRyYWdXaWR0aDsKKyAg
ICAgICAgdGhpcy5oc3ZbMl0gPSAodGhpcy5kcmFnSGVpZ2h0IC0gZHJhZ1kpIC8gdGhpcy5kcmFn
SGVpZ2h0OworICAgICAgICAKKyAgICAgICAgdGhpcy5fb25jaGFuZ2UoKTsKKyAgICB9CisgICAg
CisgICAgZnVuY3Rpb24gYWxwaGFEcmFnKCkgCisgICAgeworICAgICAgICB0aGlzLmhzdlszXSA9
IHRoaXMuX2FscGhhRWxlbWVudC52YWx1ZSAvIDEwMDsKKyAgICAgICAgCisgICAgICAgIHRoaXMu
X29uY2hhbmdlKCk7CisgICAgfQorICAgIAorICAgIHRoaXMuaGlkZVByb3h5ID0gdGhpcy5oaWRl
LmJpbmQodGhpcyk7Cit9CisKK1dlYkluc3BlY3Rvci5TcGVjdHJ1bS5oc3ZUb1JHQiA9IGZ1bmN0
aW9uKGgsIHMsIHYsIGEpIHsKKyAgICB2YXIgciwgZywgYjsKKyAgICAKKyAgICB2YXIgaSA9IE1h
dGguZmxvb3IoaCAqIDYpOworICAgIHZhciBmID0gaCAqIDYgLSBpOworICAgIHZhciBwID0gdiAq
ICgxIC0gcyk7CisgICAgdmFyIHEgPSB2ICogKDEgLSBmICogcyk7CisgICAgdmFyIHQgPSB2ICog
KDEgLSAoMSAtIGYpICogcyk7CisgICAgCisgICAgc3dpdGNoKGkgJSA2KSB7CisgICAgY2FzZSAw
OiAKKyAgICAgICAgciA9IHYsIGcgPSB0LCBiID0gcDsgCisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgMTogCisgICAgICAgIHIgPSBxLCBnID0gdiwgYiA9IHA7IAorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIDI6IAorICAgICAgICByID0gcCwgZyA9IHYsIGIgPSB0OyAKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSAzOiAKKyAgICAgICAgciA9IHAsIGcgPSBxLCBiID0gdjsgCisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgNDogCisgICAgICAgIHIgPSB0LCBnID0gcCwgYiA9IHY7IAorICAgICAg
ICBicmVhazsKKyAgICBjYXNlIDU6IAorICAgICAgICByID0gdiwgZyA9IHAsIGIgPSBxOyAKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIHJldHVybiBbciAqIDI1NSwgZyAqIDI1NSwg
YiAqIDI1NSwgYV07Cit9OworCitXZWJJbnNwZWN0b3IuU3BlY3RydW0ucmdiVG9IU1YgPSBmdW5j
dGlvbihyLCBnLCBiLCBhKSB7CisgICAgciA9IHIgLyAyNTU7CisgICAgZyA9IGcgLyAyNTU7Cisg
ICAgYiA9IGIgLyAyNTU7CisgICAgCisgICAgdmFyIG1heCA9IE1hdGgubWF4KHIsIGcsIGIpLCBt
aW4gPSBNYXRoLm1pbihyLCBnLCBiKTsKKyAgICB2YXIgaCwgcywgdiA9IG1heDsKKworICAgIHZh
ciBkID0gbWF4IC0gbWluOworICAgIHMgPSBtYXggPT09IDAgPyAwIDogZCAvIG1heDsKKworICAg
IGlmKG1heCA9PT0gbWluKSB7CisgICAgICAgIC8vIEFjaHJvbWF0aWMuCisgICAgICAgIGggPSAw
OyAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN3aXRjaChtYXgpIHsKKyAgICAgICAgY2Fz
ZSByOiAKKyAgICAgICAgICAgIGggPSAoZyAtIGIpIC8gZCArIChnIDwgYiA/IDYgOiAwKTsgCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBnOiAKKyAgICAgICAgICAgIGggPSAoYiAt
IHIpIC8gZCArIDI7IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgYjogCisgICAg
ICAgICAgICBoID0gKHIgLSBnKSAvIGQgKyA0OyAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGggLz0gNjsKKyAgICB9CisgICAgcmV0dXJuIFtoLCBzLCB2LCBhXTsKK307
CisKK1dlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUgPSBmdW5jdGlvbihlbGVtZW50LCBv
bm1vdmUsIG9uc3RhcnQsIG9uc3RvcCkgeworCisgICAgdmFyIGRvYyA9IGRvY3VtZW50OworICAg
IHZhciBkcmFnZ2luZzsKKyAgICB2YXIgb2Zmc2V0OworICAgIHZhciBzY3JvbGxPZmZzZXQ7Cisg
ICAgdmFyIG1heEhlaWdodDsKKyAgICB2YXIgbWF4V2lkdGg7CisKKyAgICBmdW5jdGlvbiBwcmV2
ZW50KGUpIAorICAgIHsKKyAgICAgICAgaWYgKGUuc3RvcFByb3BhZ2F0aW9uKQorICAgICAgICAg
ICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgCisgICAgICAgIGlmIChlLnByZXZlbnRE
ZWZhdWx0KQorICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworICAgIH0KKyAgICAKKyAg
ICBmdW5jdGlvbiBtb3ZlKGUpIAorICAgIHsKKyAgICAgICAgaWYgKGRyYWdnaW5nKSB7CisgICAg
ICAgICAgICB2YXIgZHJhZ1ggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihlLnBhZ2VYIC0gb2Zmc2V0
LmxlZnQgKyBzY3JvbGxPZmZzZXQubGVmdCwgbWF4V2lkdGgpKTsKKyAgICAgICAgICAgIHZhciBk
cmFnWSA9IE1hdGgubWF4KDAsIE1hdGgubWluKGUucGFnZVkgLSBvZmZzZXQudG9wICsgc2Nyb2xs
T2Zmc2V0LnRvcCwgbWF4SGVpZ2h0KSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChv
bm1vdmUpCisgICAgICAgICAgICAgICAgb25tb3ZlLmFwcGx5KGVsZW1lbnQsIFtkcmFnWCwgZHJh
Z1ldKTsgCisgICAgICAgIH0gCisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHN0YXJ0KGUpIAor
ICAgIHsgCisgICAgICAgIHZhciByaWdodENsaWNrID0gKGUud2hpY2gpID8gKGUud2hpY2ggPT09
IDMpIDogKGUuYnV0dG9uID09PSAyKTsKKyAgICAgICAgCisgICAgICAgIGlmICghcmlnaHRDbGlj
ayAmJiAhZHJhZ2dpbmcpIHsgCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChvbnN0YXJ0
KQorICAgICAgICAgICAgICAgIG9uc3RhcnQuYXBwbHkoZWxlbWVudCwgYXJndW1lbnRzKQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBkcmFnZ2luZyA9IHRydWU7IAorICAgICAgICAgICAgbWF4
SGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBtYXhXaWR0aCA9IGVs
ZW1lbnQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHNjcm9sbE9mZnNl
dCA9IGVsZW1lbnQuc2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgICAgICBvZmZzZXQgPSBlbGVtZW50
LnRvdGFsT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0c3RhcnQiLCBwcmV2ZW50LCBmYWxzZSk7Cisg
ICAgICAgICAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IiwgcHJldmVudCwgZmFs
c2UpOworICAgICAgICAgICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIG1vdmUs
IGZhbHNlKTsKKyAgICAgICAgICAgIGRvYy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgc3Rv
cCwgZmFsc2UpOworICAgICAgICAgICAgCisgICAgICAgICAgICBwcmV2ZW50KGUpOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHN0b3AoKSAKKyAgICB7IAorICAgICAgICBp
ZiAoZHJhZ2dpbmcpIHsgCisgICAgICAgICAgICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Vs
ZWN0c3RhcnQiLCBwcmV2ZW50LCBmYWxzZSk7CisgICAgICAgICAgICBkb2MucmVtb3ZlRXZlbnRM
aXN0ZW5lcigiZHJhZ3N0YXJ0IiwgcHJldmVudCwgZmFsc2UpOworICAgICAgICAgICAgZG9jLnJl
bW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIG1vdmUsIGZhbHNlKTsKKyAgICAgICAgICAg
IGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgc3RvcCwgZmFsc2UpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAob25zdG9wKQorICAgICAgICAgICAgICAgIG9uc3RvcC5h
cHBseShlbGVtZW50LCBhcmd1bWVudHMpOyAKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
ZHJhZ2dpbmcgPSBmYWxzZTsgCisgICAgfQorICAgIAorICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2Vkb3duIiwgc3RhcnQsIGZhbHNlKTsKK307CisKK1dlYkluc3BlY3Rvci5TcGVj
dHJ1bS5wcm90b3R5cGUgPSB7CisgICAgc2V0IGNvbG9yKGNvbG9yKQorICAgIHsKKyAgICAgICAg
dmFyIHJnYmEgPSAoY29sb3IucmdiYSB8fCBjb2xvci5yZ2IpLnNsaWNlKDApOworICAgICAgICAK
KyAgICAgICAgaWYgKHJnYmEubGVuZ3RoID09PSAzKQorICAgICAgICAgICAgcmdiYVszXSA9IDE7
CisgICAgICAgICAgICAKKyAgICAgICAgdGhpcy5oc3YgPSBXZWJJbnNwZWN0b3IuU3BlY3RydW0u
cmdiVG9IU1YocmdiYVswXSwgcmdiYVsxXSwgcmdiYVsyXSwgcmdiYVszXSk7CisgICAgfSwKKwor
ICAgIGdldCBjb2xvcigpCisgICAgeworICAgICAgICB2YXIgcmdiID0gV2ViSW5zcGVjdG9yLlNw
ZWN0cnVtLmhzdlRvUkdCKHRoaXMuaHN2WzBdLCB0aGlzLmhzdlsxXSwgdGhpcy5oc3ZbMl0sIHRo
aXMuaHN2WzNdKTsKKyAgICAgICAgdmFyIHJvdW5kID0gW01hdGgucm91bmQocmdiWzBdKSwgTWF0
aC5yb3VuZChyZ2JbMV0pLCBNYXRoLnJvdW5kKHJnYlsyXSksIHJnYlszXV07CisgICAgICAgIAor
ICAgICAgICBpZiAocmdiWzNdID09PSAxKQorICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rv
ci5Db2xvci5mcm9tUkdCLmFwcGx5KHRoaXMsIHJvdW5kKTsKKyAgICAgICAgICAgIAorICAgICAg
ICByZXR1cm4gV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBLmFwcGx5KHRoaXMsIHJvdW5kKTsK
KyAgICB9LAorICAgIAorICAgIGdldCBjb2xvckh1ZU9ubHkoKQorICAgIHsKKyAgICAgICAgdmFy
IHJnYiA9IFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5oc3ZUb1JHQih0aGlzLmhzdlswXSwgMSwgMSk7
CisgICAgICAgIHZhciByb3VuZCA9IFtNYXRoLnJvdW5kKHJnYlswXSksIE1hdGgucm91bmQocmdi
WzFdKSwgTWF0aC5yb3VuZChyZ2JbMl0pLCByZ2JbM11dOworICAgICAgICAKKyAgICAgICAgcmV0
dXJuIFdlYkluc3BlY3Rvci5Db2xvci5mcm9tUkdCQS5hcHBseSh0aGlzLCByb3VuZCk7CisgICAg
fSwKKyAgICAKKyAgICBzZXQgZGlzcGxheVRleHQodGV4dCkgCisgICAgeworICAgICAgICB0aGlz
Ll9kaXNwbGF5RWxlbWVudC50ZXh0Q29udGVudCA9IHRleHQ7CisgICAgfSwKKyAgICAKKyAgICBf
b25jaGFuZ2U6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLl91cGRhdGVVSSgpOworICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygiY2hhbmdlIiwgdGhpcy5jb2xvcik7Cisg
ICAgfSwKKyAgICAKKworICAgIF91cGRhdGVIZWxwZXJMb2NhdGlvbnM6IGZ1bmN0aW9uKCkgewor
ICAgICAgICB2YXIgaCA9IHRoaXMuaHN2WzBdOworICAgICAgICB2YXIgcyA9IHRoaXMuaHN2WzFd
OworICAgICAgICB2YXIgdiA9IHRoaXMuaHN2WzJdOworICAgICAgICAKKyAgICAgICAgLy8gV2hl
cmUgdG8gc2hvdyB0aGUgbGl0dGxlIGNpcmNsZSBpbiB0aGF0IGRpc3BsYXlzIHlvdXIgY3VycmVu
dCBzZWxlY3RlZCBjb2xvci4KKyAgICAgICAgdmFyIGRyYWdYID0gcyAqIHRoaXMuZHJhZ1dpZHRo
OworICAgICAgICB2YXIgZHJhZ1kgPSB0aGlzLmRyYWdIZWlnaHQgLSAodiAqIHRoaXMuZHJhZ0hl
aWdodCk7CisgICAgICAgIAorICAgICAgICBkcmFnWCA9IE1hdGgubWF4KAorICAgICAgICAgICAg
LXRoaXMuX2RyYWdIZWxwZXJFbGVtZW50SGVpZ2h0LCAKKyAgICAgICAgICAgIE1hdGgubWluKHRo
aXMuZHJhZ1dpZHRoIC0gdGhpcy5fZHJhZ0hlbHBlckVsZW1lbnRIZWlnaHQsIGRyYWdYIC0gdGhp
cy5fZHJhZ0hlbHBlckVsZW1lbnRIZWlnaHQpCisgICAgICAgICk7CisgICAgICAgIGRyYWdZID0g
TWF0aC5tYXgoCisgICAgICAgICAgICAtdGhpcy5fZHJhZ0hlbHBlckVsZW1lbnRIZWlnaHQsIAor
ICAgICAgICAgICAgTWF0aC5taW4odGhpcy5kcmFnSGVpZ2h0IC0gdGhpcy5fZHJhZ0hlbHBlckVs
ZW1lbnRIZWlnaHQsIGRyYWdZIC0gdGhpcy5fZHJhZ0hlbHBlckVsZW1lbnRIZWlnaHQpCisgICAg
ICAgICk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9kcmFnSGVscGVyRWxlbWVudC5wb3NpdGlv
bkF0KGRyYWdYLCBkcmFnWSk7CisgICAgICAgIAorICAgICAgICAvLyBXaGVyZSB0byBzaG93IHRo
ZSBiYXIgdGhhdCBkaXNwbGF5cyB5b3VyIGN1cnJlbnQgc2VsZWN0ZWQgaHVlLgorICAgICAgICB2
YXIgc2xpZGVZID0gKGggKiB0aGlzLnNsaWRlSGVpZ2h0KSAtIHRoaXMuc2xpZGVIZWxwZXJIZWln
aHQ7CisgICAgICAgIHRoaXMuc2xpZGVIZWxwZXIuc3R5bGUudG9wID0gc2xpZGVZICsgInB4IjsK
KyAgICAgICAgCisgICAgICAgIAorICAgICAgICB0aGlzLl9hbHBoYUVsZW1lbnQudmFsdWUgPSB0
aGlzLmhzdlszXSAqIDEwMDsKKyAgICB9LAorICAgIAorICAgIF91cGRhdGVVSTogZnVuY3Rpb24o
KSB7CisgICAgICAgIHRoaXMuX3VwZGF0ZUhlbHBlckxvY2F0aW9ucygpOworICAgICAgICAKKyAg
ICAgICAgdmFyIHJnYiA9ICh0aGlzLmNvbG9yLnJnYmEgfHwgdGhpcy5jb2xvci5yZ2IpLnNsaWNl
KDApOworICAgICAgICAKKyAgICAgICAgaWYgKHJnYi5sZW5ndGggPT09IDMpCisgICAgICAgICAg
ICByZ2JbM10gPSAxOworICAgICAgICAgICAgCisgICAgICAgIHZhciByZ2JIdWVPbmx5ID0gdGhp
cy5jb2xvckh1ZU9ubHkucmdiOworICAgICAgICAKKyAgICAgICAgdmFyIGZsYXRDb2xvciA9ICJy
Z2IoIiArIHJnYkh1ZU9ubHlbMF0gKyAiLCAiICsgcmdiSHVlT25seVsxXSArICIsICIgKyByZ2JI
dWVPbmx5WzJdICsgIikiOworICAgICAgICB2YXIgZnVsbENvbG9yID0gInJnYmEoIiArIHJnYlsw
XSArICIsICIgKyByZ2JbMV0gKyAiLCAiICsgcmdiWzJdICsgIiwgIiArIHJnYlszXSArICIpIjsK
KyAgICAgICAgCisgICAgICAgIHRoaXMuX2RyYWdnZXJFbGVtZW50LnN0eWxlLmJhY2tncm91bmRD
b2xvciA9IGZsYXRDb2xvcjsKKyAgICAgICAgdGhpcy5fc3dhdGNoSW5uZXJFbGVtZW50LnN0eWxl
LmJhY2tncm91bmRDb2xvciA9IGZ1bGxDb2xvcjsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX2Fs
cGhhRWxlbWVudC52YWx1ZSA9IHRoaXMuaHN2WzNdICogMTAwOworICAgIH0sCisgICAgCisgICAg
dG9nZ2xlOiBmdW5jdGlvbihlbGVtZW50LCBjb2xvcikgeworICAgICAgICBpZiAodGhpcy5faXNT
aG93bikgCisgICAgICAgICAgICB0aGlzLmhpZGUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgdGhpcy5zaG93KGVsZW1lbnQsIGNvbG9yKTsKKyAgICAgICAgICAgIAorICAgICAgICByZXR1
cm4gdGhpcy5faXNTaG93bjsKKyAgICB9LAorICAgIAorICAgIHNob3c6IGZ1bmN0aW9uKGVsZW1l
bnQsIGNvbG9yKSB7CisgICAgICAgIGlmICh0aGlzLl9pc1Nob3duKQorICAgICAgICAgICAgdGhp
cy5oaWRlKCk7CisgICAgICAgICAgICAgCisgICAgICAgIHRoaXMuX2lzU2hvd24gPSB0cnVlOwor
ICAgICAgICB0aGlzLl9wb3BvdmVyLnNob3codGhpcy5fY29udGFpbmVyRWxlbWVudCwgZWxlbWVu
dCk7CisgICAgICAgIAorICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRv
d24iLCB0aGlzLmhpZGVQcm94eSk7CisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJi
bHVyIiwgdGhpcy5oaWRlUHJveHkpOworICAgICAgICAKKyAgICAgICAgdGhpcy5zbGlkZUhlaWdo
dCA9IHRoaXMuX3NsaWRlckVsZW1lbnQub2Zmc2V0SGVpZ2h0OworICAgICAgICB0aGlzLmRyYWdX
aWR0aCA9IHRoaXMuX2RyYWdnZXJFbGVtZW50Lm9mZnNldFdpZHRoOworICAgICAgICB0aGlzLmRy
YWdIZWlnaHQgPSB0aGlzLl9kcmFnZ2VyRWxlbWVudC5vZmZzZXRIZWlnaHQ7CisgICAgICAgIHRo
aXMuX2RyYWdIZWxwZXJFbGVtZW50SGVpZ2h0ID0gdGhpcy5fZHJhZ0hlbHBlckVsZW1lbnQub2Zm
c2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgdGhpcy5zbGlkZUhlbHBlckhlaWdodCA9IHRoaXMuc2xp
ZGVIZWxwZXIub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgCisgICAgICAgIHRoaXMuY29sb3Ig
PSBjb2xvcjsKKyAgICAgICAgdGhpcy5fdXBkYXRlVUkoKTsKKyAgICAgICAgCisgICAgfSwKKyAg
ICAKKyAgICBoaWRlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2lzU2hvd247
CisgICAgICAgIHRoaXMuX3BvcG92ZXIuaGlkZSgpOworICAgICAgICAKKyAgICAgICAgZG9jdW1l
bnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5oaWRlUHJveHkpOworICAg
ICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuaGlkZVByb3h5KTsK
KworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygiaGlkZSIsIHRoaXMuY29s
b3IpOworICAgICAgICAKKyAgICAgICAgCisgICAgICAgIC8vIE9ubHkgd2FudCB0byBhbGxvdyBv
bmUgaW5zdGFuY2UgdG8gYmUgb3BlbiBhdCBhIHRpbWUsIHNvIGNsZWFyIG91dCBhbnkgCisgICAg
ICAgIC8vIGV4aXN0aW5nIGV2ZW50IGxpc3RlbmVycy4KKyAgICAgICAgdGhpcy5yZW1vdmVBbGxM
aXN0ZW5lcnMoKTsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMK
aW5kZXggNGUzYjNhZi4uNTQ0MTdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCkBAIC04OSw2ICs4OSw4IEBA
IFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKGNvbXB1dGVkU3R5bGVQ
YW5lKQogICAgIHRoaXMuX3NlY3Rpb25zQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CiAgICAgdGhpcy5ib2R5RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWN0aW9u
c0NvbnRhaW5lcik7CiAKKyAgICB0aGlzLl9zcGVjdHJ1bSA9IG5ldyBXZWJJbnNwZWN0b3IuU3Bl
Y3RydW0odGhpcy5ib2R5RWxlbWVudCk7CisgICAgCiAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVs
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLlN0eWxl
U2hlZXRDaGFuZ2VkLCB0aGlzLl9zdHlsZVNoZWV0Q2hhbmdlZCwgdGhpcyk7CiAgICAgV2ViSW5z
cGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2
ZW50cy5BdHRyTW9kaWZpZWQsIHRoaXMuX2F0dHJpYnV0ZXNNb2RpZmllZCwgdGhpcyk7CiAgICAg
V2ViSW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFn
ZW50LkV2ZW50cy5BdHRyUmVtb3ZlZCwgdGhpcy5fYXR0cmlidXRlc1JlbW92ZWQsIHRoaXMpOwpA
QCAtMTU4MSw3ICsxNTgzLDYgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMudmFsdWVFbGVtZW50ID0gdmFsdWVFbGVtZW50
OwogCiAgICAgICAgIHZhciBjZiA9IFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5Db2xv
ckZvcm1hdDsKLQogICAgICAgICBpZiAodmFsdWUpIHsKICAgICAgICAgICAgIHZhciBzZWxmID0g
dGhpczsKIApAQCAtMTYzMiwzMCArMTYzMyw4NCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0
eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0
KTsKICAgICAgICAgICAgICAgICB9Ci0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICB2YXIgaGFzQ29sb3JwaWNrZXIgPSBzZWxmLl9wYXJlbnRQYW5lOworICAgICAgICAgICAgICAg
IHZhciBzcGVjdHJ1bSA9IGhhc0NvbG9ycGlja2VyICYmIHNlbGYuX3BhcmVudFBhbmUuX3NwZWN0
cnVtOworICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHZhciBzd2F0Y2hFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICAgICAgICAgIHN3YXRj
aEVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsaWNrIHRvIGNoYW5nZSBj
b2xvciBmb3JtYXQiKTsKKyAgICAgICAgICAgICAgICB2YXIgc3dhdGNoSW5uZXJFbGVtZW50ID0g
c3dhdGNoRWxlbWVudC5jcmVhdGVDaGlsZCgic3BhbiIsICJzd2F0Y2gtaW5uZXIiKTsKKyAgICAg
ICAgICAgICAgICBpZiAoaGFzQ29sb3JwaWNrZXIpCisgICAgICAgICAgICAgICAgICAgIHN3YXRj
aEVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsaWNrIHRvIG9wZW4gYSBj
b2xvcnBpY2tlciIpOworICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzd2F0
Y2hFbGVtZW50LmNsYXNzTmFtZSA9ICJzd2F0Y2giOwotICAgICAgICAgICAgICAgIHN3YXRjaEVs
ZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoImJhY2tncm91bmQtY29sb3IiLCB0ZXh0KTsKLQotICAg
ICAgICAgICAgICAgIHN3YXRjaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBjaGFu
Z2VDb2xvckRpc3BsYXksIGZhbHNlKTsKLSAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgZnVuY3Rpb24oZXZlbnQpIHsgZXZlbnQuc3RvcFBy
b3BhZ2F0aW9uKCkgfSwgZmFsc2UpOwotCi0gICAgICAgICAgICAgICAgdmFyIGZvcm1hdDsKLSAg
ICAgICAgICAgICAgICB2YXIgZm9ybWF0U2V0dGluZyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5j
b2xvckZvcm1hdC5nZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAoZm9ybWF0U2V0dGluZyA9PT0g
Y2YuT3JpZ2luYWwpCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IGNmLk9yaWdpbmFsOwot
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKFByZWZlcmVuY2VzLnNob3dDb2xvck5pY2tuYW1lcyAm
JiBjb2xvci5uaWNrbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuTmlja25h
bWU7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0U2V0dGluZyA9PT0gY2YuUkdCKQot
ICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3Iuc2ltcGxlID8gY2YuUkdCIDogY2Yu
UkdCQSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0U2V0dGluZyA9PT0gY2YuSFNM
KQotICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3Iuc2ltcGxlID8gY2YuSFNMIDog
Y2YuSFNMQSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoY29sb3Iuc2ltcGxlKQotICAgICAg
ICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3IuaGFzU2hvcnRIZXgoKSA/IGNmLlNob3J0SEVY
IDogY2YuSEVYKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZv
cm1hdCA9IGNmLlJHQkE7CisgICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJtb3VzZWRvd24iLCBzdG9wUHJvcGFnYXRpb24sIGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICBzd2F0Y2hFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgc3dhdGNoQ2xpY2ss
IGZhbHNlKTsKKyAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
ImRibGNsaWNrIiwgc3RvcFByb3BhZ2F0aW9uLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgc3dhdGNoSW5uZXJFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCJiYWNr
Z3JvdW5kLWNvbG9yIiwgdGV4dCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gc3BlY3RydW1DaGFuZ2UoZSkgCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBjb2xvciA9IGUuZGF0YTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIHZhciBjb2xvclN0cmluZyA9IGNvbG9yLnRvU3RyaW5nKGdldEZvcm1hdCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGNvbG9yVmFsdWVF
bGVtZW50LnRleHRDb250ZW50ID0gY29sb3JTdHJpbmc7CisgICAgICAgICAgICAgICAgICAgIHNw
ZWN0cnVtLmRpc3BsYXlUZXh0ID0gY29sb3JTdHJpbmc7CisgICAgICAgICAgICAgICAgICAgIHN3
YXRjaElubmVyRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgiYmFja2dyb3VuZC1jb2xvciIsIGNv
bG9yU3RyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHNl
bGYuYXBwbHlTdHlsZVRleHQobmFtZUVsZW1lbnQudGV4dENvbnRlbnQgKyAiOiAiICsgdmFsdWVF
bGVtZW50LnRleHRDb250ZW50LCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gc3BlY3RydW1I
aWRlKCkgCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzZWxmLmFwcGx5
U3R5bGVUZXh0KG5hbWVFbGVtZW50LnRleHRDb250ZW50ICsgIjogIiArIHZhbHVlRWxlbWVudC50
ZXh0Q29udGVudCwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBkZWxl
dGUgc2VsZi5fcGFyZW50UGFuZS5faXNFZGl0aW5nU3R5bGU7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGZ1bmN0
aW9uIHN3YXRjaENsaWNrKGUpIAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gQWx0ICsgY2xpY2sgdG9nZ2xlcyBjb2xvciBmb3JtYXRzLgorICAgICAgICAgICAgICAg
ICAgICAvLyBDbGljayBvcGVucyBjb2xvcnBpY2tlciwgb25seSBpZiB0aGUgZWxlbWVudCBpcyBu
b3QgaW4gY29tcHV0ZWQgc3R5bGVzIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgICAgICBpZiAoZS5hbHRLZXkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNoYW5nZUNvbG9yRGlzcGxheShlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICho
YXNDb2xvcnBpY2tlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlzU2hvd24gPSBz
cGVjdHJ1bS50b2dnbGUoc3dhdGNoRWxlbWVudCwgY29sb3IpOworICAgICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Nob3duKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNwZWN0cnVtLmRpc3BsYXlUZXh0ID0gY29sb3IudG9TdHJpbmco
Z2V0Rm9ybWF0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJlbnRQ
YW5lLl9pc0VkaXRpbmdTdHlsZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNwZWN0cnVtLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHNwZWN0cnVtQ2hhbmdlKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3RydW0uYWRkRXZlbnRMaXN0ZW5lcigiaGlk
ZSIsIHNwZWN0cnVtSGlkZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCiAKKyAgICAg
ICAgICAgICAgICB2YXIgZm9ybWF0ID0gZ2V0Rm9ybWF0KCk7CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gZ2V0Rm9ybWF0KCkgCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybWF0OworICAgICAgICAgICAgICAgICAgICB2YXIg
Zm9ybWF0U2V0dGluZyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb2xvckZvcm1hdC5nZXQoKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdFNldHRpbmcgPT09IGNmLk9yaWdpbmFsKQor
ICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuT3JpZ2luYWw7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKFByZWZlcmVuY2VzLnNob3dDb2xvck5pY2tuYW1lcyAmJiBjb2xv
ci5uaWNrbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IGNmLk5pY2tuYW1l
OworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3JtYXRTZXR0aW5nID09PSBjZi5SR0Ip
CisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3Iuc2ltcGxlID8gY2YuUkdC
IDogY2YuUkdCQSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvcm1hdFNldHRpbmcg
PT09IGNmLkhTTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IChjb2xvci5zaW1w
bGUgPyBjZi5IU0wgOiBjZi5IU0xBKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY29s
b3Iuc2ltcGxlKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gKGNvbG9yLmhhc1No
b3J0SGV4KCkgPyBjZi5TaG9ydEhFWCA6IGNmLkhFWCk7CisgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IGNmLlJHQkE7CisgICAgICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgdmFyIGNvbG9y
VmFsdWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAg
ICAgICAgIGNvbG9yVmFsdWVFbGVtZW50LnRleHRDb250ZW50ID0gY29sb3IudG9TdHJpbmcoZm9y
bWF0KTsKIApAQCAtMTcwMiw3ICsxNzU3LDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0KKyAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjaGFuZ2VDb2xvckRpc3Bs
YXkoZXZlbnQpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBkbyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggNjE0
MmFmMy4uMjVjZjNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
V2ViS2l0LnFyYwpAQCAtMTI2LDYgKzEyNiw3IEBACiAgICAgPGZpbGU+U291cmNlSFRNTFRva2Vu
aXplci5qczwvZmlsZT4KICAgICA8ZmlsZT5Tb3VyY2VKYXZhU2NyaXB0VG9rZW5pemVyLmpzPC9m
aWxlPgogICAgIDxmaWxlPlNvdXJjZVRva2VuaXplci5qczwvZmlsZT4KKyAgICA8ZmlsZT5TcGVj
dHJ1bS5qczwvZmlsZT4KICAgICA8ZmlsZT5TcGxpdFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+
U3RhdHVzQmFyQnV0dG9uLmpzPC9maWxlPgogICAgIDxmaWxlPlN0eWxlc1NpZGViYXJQYW5lLmpz
PC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuY3NzCmluZGV4IDhjZTM2MDkuLmRiYTE0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTE0MjksNiArMTQyOSwxMyBAQCBs
aS5lZGl0aW5nIC5zd2F0Y2gsIGxpLmVkaXRpbmcgLmVuYWJsZWQtYnV0dG9uLCAgbGkuZWRpdGlu
Zy1zdWItcGFydCAuZGVsZXRlLWJ1dAogICAgIHdpZHRoOiAxZW07CiAgICAgaGVpZ2h0OiAxZW07
CiAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjgsIDEyOCwgMTI4LCAwLjYpOworICAgIGJh
Y2tncm91bmQtaW1hZ2U6IHVybChJbWFnZXMvY2hlY2tlci5wbmcpOworfQorCisuc3dhdGNoLWlu
bmVyIHsgCisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIGRpc3BsYXk6
IGJsb2NrOwogfQogCiAuc3dhdGNoOmhvdmVyIHsKQEAgLTI2NTYsMyArMjY2MywxMDcgQEAgYm9k
eS5wbGF0Zm9ybS1tYWMgI2RyYXdlci1zdGF0dXMtYmFyIC5zZWFyY2gtc3RhdHVzLWJhci1wcm9n
cmVzcyB7CiAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICBib3JkZXItd2lkdGg6
IDAgMCAxMXB4IDA7CiB9CisKKy8qIGh0dHBzOi8vZ2l0aHViLmNvbS9iZ3JpbnMvc3BlY3RydW0g
Ki8KKy5zcGVjdHJ1bS1jb250YWluZXIgeyAKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7IAorICAg
IHRvcDogMDsgCisgICAgbGVmdDogMDsgCisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
IGJhY2tncm91bmQ6IHJnYmEoMjMwLCAyMzAsIDIzMCwgMSkgIWltcG9ydGFudDsKKyAgICBib3Jk
ZXI6IDFweCBzb2xpZCAjNjQ2NDY0OworICAgIHBhZGRpbmc6IDEwcHg7CisgICAgd2lkdGg6IDIw
MHB4OworICAgIHotaW5kZXg6IDEwOworfQorCisuc3BlY3RydW0tdG9wIHsKKyAgcG9zaXRpb246
IHJlbGF0aXZlOyAKKyAgd2lkdGg6IDEwMCU7CisgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKK30K
KworLnNwZWN0cnVtLWNvbG9yIHsgCisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDog
MDsKKyAgICBsZWZ0OiAwOworICAgIGJvdHRvbTogMDsKKyAgICByaWdodDogMjAlOworfQorLnNw
ZWN0cnVtLWh1ZSB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBy
aWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgbGVmdDogODMlOworfQorCisuc3BlY3RydW0t
ZmlsbCB7IAorICAgIC8qIFNhbWUgYXMgc3BlY3RydW0tY29sb3Igd2lkdGggdG8gZm9yY2UgYXNw
ZWN0IHJhdGlvLiAqLworICAgIG1hcmdpbi10b3A6IDgwJTsgCit9CisKKy5zcGVjdHJ1bS1zYXQs
IC5zcGVjdHJ1bS12YWwsIC5zcGVjdHJ1bS10b3AtaW5uZXIgeyAKKyAgICBwb3NpdGlvbjogYWJz
b2x1dGU7IAorICAgIHRvcDowOyAKKyAgICBsZWZ0OjA7IAorICAgIHJpZ2h0OjA7IAorICAgIGJv
dHRvbTowOyAKK30KKworLnNwZWN0cnVtLXJhbmdlLWNvbnRhaW5lciB7CisgICAgcG9zaXRpb246
IHJlbGF0aXZlOworICAgIHBhZGRpbmctdG9wOiAxMHB4OworfQorCisuc3BlY3RydW0tcmFuZ2Ut
Y29udGFpbmVyICogeworICAgIGZvbnQtc2l6ZTogOXB4OworICAgIHZlcnRpY2FsLWFsaWduOiBt
aWRkbGU7Cit9CisKKy5zcGVjdHJ1bS1yYW5nZS1jb250YWluZXIgbGFiZWwgeworICAgIHdpZHRo
OiAzMnB4OworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKK30KKworLnNwZWN0cnVtLXJhbmdl
LWNvbnRhaW5lciBpbnB1dCB7IAorICAgIHdpZHRoOiAxMzBweDsgCit9CisKKy5zd2F0Y2gsIC5z
cGVjdHJ1bS1kcmFnZ2VyLCAuc3BlY3RydW0tc2xpZGVyIHsgCisgICAgLXdlYmtpdC11c2VyLXNl
bGVjdDogbm9uZTsKK30KKworLnNwZWN0cnVtLXNhdCB7CisgICAgYmFja2dyb3VuZC1pbWFnZTog
LXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCwgI0ZGRiwgcmdiYSgyMDQsIDE1NCwgMTI5LCAw
KSk7Cit9CisKKy5zcGVjdHJ1bS12YWwgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQt
bGluZWFyLWdyYWRpZW50KGJvdHRvbSwgIzAwMDAwMCwgcmdiYSgyMDQsIDE1NCwgMTI5LCAwKSk7
Cit9CisKKy5zcGVjdHJ1bS1odWUgeworICAgIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdy
YWRpZW50KHRvcCwgI2ZmMDAwMCAwJSwgI2ZmZmYwMCAxNyUsICMwMGZmMDAgMzMlLCAjMDBmZmZm
IDUwJSwgIzAwMDBmZiA2NyUsICNmZjAwZmYgODMlLCAjZmYwMDAwIDEwMCUpOworfQorCisuc3Bl
Y3RydW0tZHJhZ2dlciB7CisgICBib3JkZXItcmFkaXVzOiA1cHg7IAorICAgaGVpZ2h0OiA1cHg7
IAorICAgd2lkdGg6IDVweDsgCisgICBib3JkZXI6IHNvbGlkIGJsYWNrIDNweDsKKyAgIGN1cnNv
cjogcG9pbnRlcjsKKyAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgCisgICB0b3A6IDA7IAorICAgbGVm
dDogMDsKK30KKworLnNwZWN0cnVtLXNsaWRlciB7IAorICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsg
CisgICAgdG9wOiAwOyAKKyAgICBjdXJzb3I6IHBvaW50ZXI7CisgICAgaGVpZ2h0OiA1cHg7IAor
ICAgIHdpZHRoOiAxMTAlOworICAgIG1hcmdpbi1sZWZ0OiAtNSU7CisgICAgYmFja2dyb3VuZDog
I2ZmZjsgCisgICAgb3BhY2l0eTogLjg7IAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggNzcwZjQwMi4uNTBlYzliZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRt
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1s
CkBAIC04MSw2ICs4MSw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iQXBwbGljYXRpb25DYWNoZU1vZGVsLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJBcHBsaWNhdGlvbkNhY2hlSXRlbXNWaWV3
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJT
Y3JpcHQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IlNwZWN0cnVtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJTaWRlYmFyUGFuZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iRWxlbWVudHNUcmVlT3V0bGluZS5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRE9NUHJlc2VudGF0aW9uVXRp
bHMuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC91dGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L3V0aWxpdGllcy5qcwppbmRleCA1MGYyODY5Li44NGI2Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwpAQCAtMjgxLDYgKzI4MSwyOCBA
QCBFbGVtZW50LnByb3RvdHlwZS50b3RhbE9mZnNldFRvcCA9IGZ1bmN0aW9uKCkKICAgICByZXR1
cm4gdG90YWw7CiB9CiAKK0VsZW1lbnQucHJvdG90eXBlLnRvdGFsT2Zmc2V0ID0gZnVuY3Rpb24o
cGFyZW50KSAKK3sKKyAgICB2YXIgdG90YWxMZWZ0ID0gMDsKKyAgICB2YXIgdG90YWxUb3AgPSAw
OworICAgIGZvciAodmFyIGVsZW1lbnQgPSB0aGlzOyBlbGVtZW50ICYmIGVsZW1lbnQgIT09IHBh
cmVudDsgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgIHRvdGFsTGVm
dCArPSBlbGVtZW50Lm9mZnNldExlZnQgKyAodGhpcyAhPT0gZWxlbWVudCA/IGVsZW1lbnQuY2xp
ZW50TGVmdCA6IDApOworICAgICAgICB0b3RhbFRvcCArPSBlbGVtZW50Lm9mZnNldFRvcCArICh0
aGlzICE9PSBlbGVtZW50ID8gZWxlbWVudC5jbGllbnRUb3AgOiAwKTsKKyAgICB9CisgICAgcmV0
dXJuIHsgbGVmdDogdG90YWxMZWZ0LCB0b3A6IHRvdGFsVG9wIH07Cit9CisKK0VsZW1lbnQucHJv
dG90eXBlLnNjcm9sbE9mZnNldCA9IGZ1bmN0aW9uKCkgCit7CisgICAgdmFyIGN1ckxlZnQgPSAw
OworICAgIHZhciBjdXJUb3AgPSAwOworICAgIGZvciAodmFyIGVsZW1lbnQgPSB0aGlzOyBlbGVt
ZW50OyBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgY3VyTGVmdCAr
PSBlbGVtZW50LnNjcm9sbExlZnQ7CisgICAgICAgIGN1clRvcCArPSBlbGVtZW50LnNjcm9sbFRv
cDsKKyAgICB9CisgICAgcmV0dXJuIHsgbGVmdDogY3VyTGVmdCwgdG9wOiBjdXJUb3AgfTsKK30K
KwogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqIEBwYXJhbSB7bnVtYmVyPX0geApAQCAtODc3LDYg
Kzg5OSwxMCBAQCBmdW5jdGlvbiBpc0VudGVyS2V5KGV2ZW50KSB7CiAgICAgcmV0dXJuIGV2ZW50
LmtleUNvZGUgIT09IDIyOSAmJiBldmVudC5rZXlJZGVudGlmaWVyID09PSAiRW50ZXIiOwogfQog
CitmdW5jdGlvbiBzdG9wUHJvcGFnYXRpb24oZSkgeworICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7
Cit9CisKIC8qKgogICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50CiAgKiBAcGFyYW0ge251bWJl
cn0gb2Zmc2V0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117092</attachid>
            <date>2011-11-29 18:27:58 -0800</date>
            <delta_ts>2011-12-14 09:23:15 -0800</delta_ts>
            <desc>Latest patch cleaned up based on feedback</desc>
            <filename>colorpicker.patch</filename>
            <type>text/plain</type>
            <size>33043</size>
            <attacher name="Brian Grinstead">briangrinstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkYzBjNGY4Li4yZjZiMDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEg
QEAKKzIwMTEtMTEtMjkgIGJncmlucyAgPGJyaWFuZ3JpbnN0ZWFkQGdtYWlsLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgY29sb3JwaWNrZXIgZnVuY3Rpb25hbGl0eSB0byBjb2xv
ciBzd2F0Y2hlcyBpbiBTdHlsZXMgU2lkZWJhcgorICAgICAgICBUaGlzIG1ha2VzIGl0IGVhc2ll
ciB0byBwaWNrIHN0eWxlcywgYW5kIG9wZW5zIHVwIHNvbWUgcG9zc2liaWxpdGllcyBmb3IgbmVh
dCBjb2xvciBiYXNlZAorICAgICAgICBmZWF0dXJlcyBpbiB0aGUgZnV0dXJlIChmb3IgZXhhbXBs
ZTogc2VsZWN0aW5nIGZyb20gYSAncGFsbGV0JyBvZiBjb2xvcnMgZm91bmQgaW4gdGhlIENTUyku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTI2Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29sb3IuZnJvbVJHQik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBvcG92ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlBvcG92ZXIucHJvdG90eXBlLnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBvcG92ZXIu
cHJvdG90eXBlLmhpZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBl
Ll9wb3NpdGlvbkVsZW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3BlY3Ry
dW0uanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmh1ZURyYWcpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmNvbG9yRHJhZyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3BlY3RydW0uYWxwaGFEcmFnKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVj
dHJ1bSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uaHN2VG9SR0IpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnJnYlRvSFNWKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TcGVjdHJ1bS5kcmFnZ2FibGUucHJldmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3Bl
Y3RydW0uZHJhZ2dhYmxlLm1vdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmRy
YWdnYWJsZS5zdGFydCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxl
LnN0b3ApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmRyYWdnYWJsZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLnNldCBjb2xvcik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLmdldCBjb2xvcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLmdldCBjb2xvckh1ZU9ubHkpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS5zZXQgZGlzcGxheVRleHQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS5fb25jaGFuZ2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS5fdXBkYXRlSGVscGVyTG9jYXRpb25z
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuX3VwZGF0ZVVJKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUudG9nZ2xlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuc2hvdyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLmhpZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5
bGVzU2lkZWJhclBhbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVl
RWxlbWVudC5wcm90b3R5cGUudXBkYXRlVGl0bGUuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuY3NzOgorICAgICAgICAoLnN3YXRjaCk6CisgICAgICAgICguc3dhdGNoLWlubmVyKToKKyAg
ICAgICAgKC5zcGVjdHJ1bS1jb250YWluZXIpOgorICAgICAgICAoLnNwZWN0cnVtLXRvcCk6Cisg
ICAgICAgICguc3BlY3RydW0tY29sb3IpOgorICAgICAgICAoLnNwZWN0cnVtLWh1ZSk6CisgICAg
ICAgICguc3BlY3RydW0tZmlsbCk6CisgICAgICAgICguc3BlY3RydW0tc2F0LCAuc3BlY3RydW0t
dmFsLCAuc3BlY3RydW0tdG9wLWlubmVyKToKKyAgICAgICAgKC5zcGVjdHJ1bS1yYW5nZS1jb250
YWluZXIpOgorICAgICAgICAoLnNwZWN0cnVtLXJhbmdlLWNvbnRhaW5lciAqKToKKyAgICAgICAg
KC5zcGVjdHJ1bS1yYW5nZS1jb250YWluZXIgbGFiZWwpOgorICAgICAgICAoLnNwZWN0cnVtLXJh
bmdlLWNvbnRhaW5lciBpbnB1dCk6CisgICAgICAgICguc3dhdGNoLCAuc3BlY3RydW0tZHJhZ2dl
ciwgLnNwZWN0cnVtLXNsaWRlcik6CisgICAgICAgICguc3BlY3RydW0tc2F0KToKKyAgICAgICAg
KC5zcGVjdHJ1bS12YWwpOgorICAgICAgICAoLnNwZWN0cnVtLWRyYWdnZXIpOgorICAgICAgICAo
LnNwZWN0cnVtLXNsaWRlcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qczoKKyAg
ICAgICAgKEVsZW1lbnQucHJvdG90eXBlLnRvdGFsT2Zmc2V0KToKKyAgICAgICAgKEVsZW1lbnQu
cHJvdG90eXBlLnNjcm9sbE9mZnNldCk6CisgICAgICAgICgpOgorCiAyMDExLTExLTIzICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQu
IEJ1aWxkIGZpeC4gQWRkZWQgbWlzc2luZyBFTkFCTEUoV09SS0VSUykgZ3VhcmRzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IGI5YzdhZmYuLmI3MjJlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTY0MjAs
NiArNjQyMCw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VIVE1M
VG9rZW5pemVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUph
dmFTY3JpcHRUb2tlbml6ZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQv
U291cmNlVG9rZW5pemVyLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Nw
ZWN0cnVtLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NwbGl0Vmlldy5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TdGF0dXNCYXJCdXR0b24uanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBh
MWViNjY2Li5iMzcyZGMzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagpAQCAtNjkyNDksNiArNjkyNDksMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4K
IAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcU3Bl
Y3RydW0uanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFNwbGl0Vmlldy5qcyIKIAkJCQkJPgogCQkJCTwv
RmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29s
b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzCmluZGV4
IDYyNTg4ZGYuLjZhMDBkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQ29sb3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db2xvci5qcwpAQCAtNDQsNiArNDQsMTEgQEAgV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JB
ID0gZnVuY3Rpb24ociwgZywgYiwgYSkKICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2xv
cigicmdiYSgiICsgciArICIsIiArIGcgKyAiLCIgKyBiICsgIiwiICsgKHR5cGVvZiBhID09PSAi
dW5kZWZpbmVkIiA/IDEgOiBhKSArICIpIik7CiB9CiAKK1dlYkluc3BlY3Rvci5Db2xvci5mcm9t
UkdCID0gZnVuY3Rpb24ociwgZywgYikKK3sKKyAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5D
b2xvcigicmdiKCIgKyByICsgIiwiICsgZyArICIsIiArIGIgKyAiKSIpOworfQorCiBXZWJJbnNw
ZWN0b3IuQ29sb3IucHJvdG90eXBlID0gewogICAgIGdldCBzaG9ydGhleCgpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzCmluZGV4IDRiZmQ2
YTMuLjZlODE4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUG9wb3Zlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Bv
cG92ZXIuanMKQEAgLTMyLDcgKzMyLDcgQEAKICAqIEBjb25zdHJ1Y3RvcgogICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuUG9wb3ZlckhlbHBlcj19IHBvcG92ZXJIZWxwZXIKICAqLwotV2ViSW5zcGVj
dG9yLlBvcG92ZXIgPSBmdW5jdGlvbihwb3BvdmVySGVscGVyKQorV2ViSW5zcGVjdG9yLlBvcG92
ZXIgPSBmdW5jdGlvbihwb3BvdmVySGVscGVyLCBhcHBlbmRFbGVtZW50LCBoaWRlT3ZlcmZsb3cp
CiB7CiAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJwb3BvdmVyIGN1c3RvbS1wb3B1cC12ZXJ0aWNh
bC1zY3JvbGwgY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIjsKQEAgLTQ1LDYgKzQ1LDEy
IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyID0gZnVuY3Rpb24ocG9wb3ZlckhlbHBlcikKICAgICB0
aGlzLl9jb250ZW50RGl2LmNsYXNzTmFtZSA9ICJjb250ZW50IjsKICAgICB0aGlzLl92aXNpYmxl
ID0gZmFsc2U7CiAgICAgdGhpcy5fcG9wb3ZlckhlbHBlciA9IHBvcG92ZXJIZWxwZXI7CisgICAg
CisgICAgdGhpcy5fYXBwZW5kRWxlbWVudCA9IGFwcGVuZEVsZW1lbnQgfHwgZG9jdW1lbnQuYm9k
eTsKKyAgICB0aGlzLl9oaWRlT3ZlcmZsb3cgPSBoaWRlT3ZlcmZsb3c7CisgICAgCisgICAgaWYg
KGhpZGVPdmVyZmxvdykKKyAgICAgICAgdGhpcy5fY29udGVudERpdi5zdHlsZS5vdmVyZmxvdyA9
ICJoaWRkZW4iOwogfQogCiBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CkBAIC01
NiwxOCArNjIsMTggQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogCiAgICAg
ICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4sIGJ1dCB3ZSBoaWRlIHByZXZpb3VzIHBvcHVw
IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUuCiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuUG9wb3Zl
ci5fcG9wb3ZlckVsZW1lbnQpCi0gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxk
KFdlYkluc3BlY3Rvci5Qb3BvdmVyLl9wb3BvdmVyRWxlbWVudCk7CisgICAgICAgICAgICB0aGlz
Ll9hcHBlbmRFbGVtZW50LnJlbW92ZUNoaWxkKFdlYkluc3BlY3Rvci5Qb3BvdmVyLl9wb3BvdmVy
RWxlbWVudCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5Qb3BvdmVyLl9wb3BvdmVyRWxlbWVudCA9
IHRoaXMuZWxlbWVudDsKIAogICAgICAgICAvLyBUZW1wb3JhcmlseSBhdHRhY2ggaW4gb3JkZXIg
dG8gbWVhc3VyZSBwcmVmZXJyZWQgZGltZW5zaW9ucy4KICAgICAgICAgdGhpcy5jb250ZW50RWxl
bWVudC5wb3NpdGlvbkF0KDAsIDApOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KHRoaXMuY29udGVudEVsZW1lbnQpOworICAgICAgICB0aGlzLl9hcHBlbmRFbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuY29udGVudEVsZW1lbnQpOwogICAgICAgICBwcmVmZXJyZWRXaWR0aCA9IHBy
ZWZlcnJlZFdpZHRoIHx8IHRoaXMuY29udGVudEVsZW1lbnQub2Zmc2V0V2lkdGg7CiAgICAgICAg
IHByZWZlcnJlZEhlaWdodCA9IHByZWZlcnJlZEhlaWdodCB8fCB0aGlzLmNvbnRlbnRFbGVtZW50
Lm9mZnNldEhlaWdodDsKIAogICAgICAgICB0aGlzLl9jb250ZW50RGl2LmFwcGVuZENoaWxkKHRo
aXMuY29udGVudEVsZW1lbnQpOwogICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fY29udGVudERpdik7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5l
bGVtZW50KTsKKyAgICAgICAgdGhpcy5fYXBwZW5kRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmVs
ZW1lbnQpOwogICAgICAgICB0aGlzLl9wb3NpdGlvbkVsZW1lbnQoYW5jaG9yLCBwcmVmZXJyZWRX
aWR0aCwgcHJlZmVycmVkSGVpZ2h0KTsKICAgICAgICAgdGhpcy5fdmlzaWJsZSA9IHRydWU7CiAg
ICAgICAgIGlmICh0aGlzLl9wb3BvdmVySGVscGVyKQpAQCAtNzgsNyArODQsNyBAQCBXZWJJbnNw
ZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLlBvcG92ZXIuX3BvcG92ZXJFbGVtZW50KSB7CiAgICAgICAgICAgICBkZWxldGUgV2ViSW5z
cGVjdG9yLlBvcG92ZXIuX3BvcG92ZXJFbGVtZW50OwotICAgICAgICAgICAgZG9jdW1lbnQuYm9k
eS5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5fYXBwZW5kRWxl
bWVudC5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQpOwogICAgICAgICB9CiAgICAgICAgIHRoaXMu
X3Zpc2libGUgPSBmYWxzZTsKICAgICB9LApAQCAtMTAzLDE5ICsxMDksMjUgQEAgV2ViSW5zcGVj
dG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogICAgIF9wb3NpdGlvbkVsZW1lbnQ6IGZ1bmN0aW9u
KGFuY2hvckVsZW1lbnQsIHByZWZlcnJlZFdpZHRoLCBwcmVmZXJyZWRIZWlnaHQpCiAgICAgewog
ICAgICAgICBjb25zdCBib3JkZXJXaWR0aCA9IDI1OwotICAgICAgICBjb25zdCBzY3JvbGxlcldp
ZHRoID0gMTE7CisgICAgICAgIGNvbnN0IHNjcm9sbGVyV2lkdGggPSB0aGlzLl9oaWRlT3ZlcmZs
b3cgPyAwIDogMTE7CiAgICAgICAgIGNvbnN0IGFycm93SGVpZ2h0ID0gMTU7CiAgICAgICAgIGNv
bnN0IGFycm93T2Zmc2V0ID0gMTA7CiAgICAgICAgIGNvbnN0IGJvcmRlclJhZGl1cyA9IDEwOwog
CiAgICAgICAgIC8vIFNraW5ueSB0b29sdGlwcyBhcmUgbm90IHByZXR0eSwgdGhlaXIgYXJyb3cg
bG9jYXRpb24gaXMgbm90IG5pY2UuCiAgICAgICAgIHByZWZlcnJlZFdpZHRoID0gTWF0aC5tYXgo
cHJlZmVycmVkV2lkdGgsIDUwKTsKLSAgICAgICAgY29uc3QgdG90YWxXaWR0aCA9IHdpbmRvdy5p
bm5lcldpZHRoOwotICAgICAgICBjb25zdCB0b3RhbEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdo
dDsKKyAgICAgICAgY29uc3QgdG90YWxXaWR0aCA9IHRoaXMuX2FwcGVuZEVsZW1lbnQgPyB0aGlz
Ll9hcHBlbmRFbGVtZW50LmNsaWVudFdpZHRoIDogd2luZG93LmlubmVyV2lkdGg7CisgICAgICAg
IGNvbnN0IHRvdGFsSGVpZ2h0ID0gdGhpcy5fYXBwZW5kRWxlbWVudCA/IHRoaXMuX2FwcGVuZEVs
ZW1lbnQuY2xpZW50SGVpZ2h0IDogd2luZG93LmlubmVySGVpZ2h0OwogCiAgICAgICAgIHZhciBh
bmNob3JCb3ggPSBhbmNob3JFbGVtZW50LmJveEluV2luZG93KHdpbmRvdyk7CiAgICAgICAgIHZh
ciBuZXdFbGVtZW50UG9zaXRpb24gPSB7IHg6IDAsIHk6IDAsIHdpZHRoOiBwcmVmZXJyZWRXaWR0
aCArIHNjcm9sbGVyV2lkdGgsIGhlaWdodDogcHJlZmVycmVkSGVpZ2h0IH07Ci0KKyAgICAgICAg
CisgICAgICAgIGlmICh0aGlzLl9hcHBlbmRFbGVtZW50KSB7CisgICAgICAgICAgICB2YXIgcmVs
YXRpdmVPZmZzZXQgPSBhbmNob3JFbGVtZW50LnRvdGFsT2Zmc2V0KHRoaXMuX2FwcGVuZEVsZW1l
bnQpOworICAgICAgICAgICAgYW5jaG9yQm94LnggPSByZWxhdGl2ZU9mZnNldC5sZWZ0OworICAg
ICAgICAgICAgYW5jaG9yQm94LnkgPSByZWxhdGl2ZU9mZnNldC50b3A7CisgICAgICAgIH0KKyAg
ICAgICAgCiAgICAgICAgIHZhciB2ZXJ0aWNhbEFsaWdubWVudDsKICAgICAgICAgdmFyIHJvb21B
Ym92ZSA9IGFuY2hvckJveC55OwogICAgICAgICB2YXIgcm9vbUJlbG93ID0gdG90YWxIZWlnaHQg
LSBhbmNob3JCb3gueSAtIGFuY2hvckJveC5oZWlnaHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NwZWN0cnVtLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TcGVjdHJ1bS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5lMDFhYTdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TcGVjdHJ1bS5qcwpAQCAtMCwwICsxLDM2NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBCcmlhbiBHcmluc3RlYWQgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworIAorV2ViSW5z
cGVjdG9yLlNwZWN0cnVtID0gZnVuY3Rpb24oY29udGFpbmVyKQoreworICAgIHRoaXMuX3BvcG92
ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlBvcG92ZXIobnVsbCwgY29udGFpbmVyLCB0cnVlKTsKKyAg
ICB0aGlzLl9wb3BvdmVyLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgc3Rv
cFByb3BhZ2F0aW9uLCBmYWxzZSk7CisgICAgCisgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRoaXMuX2NvbnRhaW5lckVsZW1l
bnQuY2xhc3NOYW1lID0gInNwZWN0cnVtLWNvbnRhaW5lciI7CisgICAgCisgICAgdmFyIHRvcEVs
ZW1lbnQgPSB0aGlzLl9jb250YWluZXJFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3Ry
dW0tdG9wIik7CisgICAgdG9wRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVtLWZp
bGwiKTsKKworICAgIHZhciB0b3BJbm5lckVsZW1lbnQgPSB0b3BFbGVtZW50LmNyZWF0ZUNoaWxk
KCJkaXYiLCAic3BlY3RydW0tdG9wLWlubmVyIik7CisgICAgdGhpcy5fZHJhZ2dlckVsZW1lbnQg
PSB0b3BJbm5lckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJzcGVjdHJ1bS1jb2xvciIpOwor
ICAgIHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50ID0gdGhpcy5fZHJhZ2dlckVsZW1lbnQuY3JlYXRl
Q2hpbGQoImRpdiIsICJzcGVjdHJ1bS1zYXQiKS5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVt
LXZhbCIpLmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0tZHJhZ2dlciIpOworICAgIAorICAg
IHRoaXMuX3NsaWRlckVsZW1lbnQgPSB0b3BJbm5lckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIs
ICJzcGVjdHJ1bS1odWUiKTsKKyAgICB0aGlzLnNsaWRlSGVscGVyID0gdGhpcy5fc2xpZGVyRWxl
bWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVtLXNsaWRlciIpOworICAgIAorICAgIHZh
ciByYW5nZUNvbnRhaW5lciA9IHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRp
diIsICJzcGVjdHJ1bS1yYW5nZS1jb250YWluZXIiKTsKKyAgICB2YXIgYWxwaGFMYWJlbCA9IHJh
bmdlQ29udGFpbmVyLmNyZWF0ZUNoaWxkKCJsYWJlbCIpOworICAgIGFscGhhTGFiZWwudGV4dENv
bnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoImFscGhhIikgKyAiOiAiOworICAgIAorICAg
IHRoaXMuX2FscGhhRWxlbWVudCA9IHJhbmdlQ29udGFpbmVyLmNyZWF0ZUNoaWxkKCJpbnB1dCIs
ICJzcGVjdHJ1bS1yYW5nZSIpOworICAgIHRoaXMuX2FscGhhRWxlbWVudC5zZXRBdHRyaWJ1dGUo
InR5cGUiLCAicmFuZ2UiKTsKKyAgICB0aGlzLl9hbHBoYUVsZW1lbnQuc2V0QXR0cmlidXRlKCJt
aW4iLCAiMCIpOworICAgIHRoaXMuX2FscGhhRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1heCIsICIx
MDAiKTsKKyAgICB0aGlzLl9hbHBoYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwg
YWxwaGFEcmFnLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAKKyAgICB2YXIgc3dhdGNoRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBzd2F0Y2hFbGVtZW50LmNs
YXNzTmFtZSA9ICJzd2F0Y2giOworICAgIHRoaXMuX3N3YXRjaElubmVyRWxlbWVudCA9IHN3YXRj
aEVsZW1lbnQuY3JlYXRlQ2hpbGQoInNwYW4iLCAic3dhdGNoLWlubmVyIik7CisgICAgCisgICAg
dmFyIGRpc3BsYXlDb250YWluZXIgPSByYW5nZUNvbnRhaW5lci5jcmVhdGVDaGlsZCgiZGl2Iik7
CisgICAgCisgICAgdmFyIGNvbG9yTGFiZWwgPSBkaXNwbGF5Q29udGFpbmVyLmNyZWF0ZUNoaWxk
KCJsYWJlbCIpOworICAgIGNvbG9yTGFiZWwudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoImNvbG9yIikgKyAiOiAiOworICAgIAorICAgIGRpc3BsYXlDb250YWluZXIuYXBwZW5k
Q2hpbGQoc3dhdGNoRWxlbWVudCk7CisgICAgCisgICAgdGhpcy5fZGlzcGxheUVsZW1lbnQgPSBk
aXNwbGF5Q29udGFpbmVyLmNyZWF0ZUNoaWxkKCJzcGFuIik7CisgICAgCisgICAgV2ViSW5zcGVj
dG9yLlNwZWN0cnVtLmRyYWdnYWJsZSh0aGlzLl9zbGlkZXJFbGVtZW50LCBodWVEcmFnLmJpbmQo
dGhpcykpOworICAgIFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUodGhpcy5fZHJhZ2dl
ckVsZW1lbnQsIGNvbG9yRHJhZy5iaW5kKHRoaXMpKTsKKyAgICAKKyAgICBmdW5jdGlvbiBodWVE
cmFnKGVsZW1lbnQsIGRyYWdYLCBkcmFnWSkgCisgICAgeworICAgICAgICB0aGlzLmhzdlswXSA9
IChkcmFnWSAvIHRoaXMuc2xpZGVIZWlnaHQpOworICAgICAgICAKKyAgICAgICAgdGhpcy5fb25j
aGFuZ2UoKTsgIAorICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBjb2xvckRyYWcoZWxlbWVudCwg
ZHJhZ1gsIGRyYWdZKSAKKyAgICB7CisgICAgICAgIHRoaXMuaHN2WzFdID0gZHJhZ1ggLyB0aGlz
LmRyYWdXaWR0aDsKKyAgICAgICAgdGhpcy5oc3ZbMl0gPSAodGhpcy5kcmFnSGVpZ2h0IC0gZHJh
Z1kpIC8gdGhpcy5kcmFnSGVpZ2h0OworICAgICAgICAKKyAgICAgICAgdGhpcy5fb25jaGFuZ2Uo
KTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gYWxwaGFEcmFnKCkgCisgICAgeworICAgICAg
ICB0aGlzLmhzdlszXSA9IHRoaXMuX2FscGhhRWxlbWVudC52YWx1ZSAvIDEwMDsKKyAgICAgICAg
CisgICAgICAgIHRoaXMuX29uY2hhbmdlKCk7CisgICAgfQorICAgIAorICAgIHRoaXMuaGlkZVBy
b3h5ID0gdGhpcy5oaWRlLmJpbmQodGhpcyk7Cit9CisKK1dlYkluc3BlY3Rvci5TcGVjdHJ1bS5o
c3ZUb1JHQiA9IGZ1bmN0aW9uKGgsIHMsIHYsIGEpIHsKKyAgICB2YXIgciwgZywgYjsKKyAgICAK
KyAgICB2YXIgaSA9IE1hdGguZmxvb3IoaCAqIDYpOworICAgIHZhciBmID0gaCAqIDYgLSBpOwor
ICAgIHZhciBwID0gdiAqICgxIC0gcyk7CisgICAgdmFyIHEgPSB2ICogKDEgLSBmICogcyk7Cisg
ICAgdmFyIHQgPSB2ICogKDEgLSAoMSAtIGYpICogcyk7CisgICAgCisgICAgc3dpdGNoKGkgJSA2
KSB7CisgICAgY2FzZSAwOiAKKyAgICAgICAgciA9IHYsIGcgPSB0LCBiID0gcDsgCisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgMTogCisgICAgICAgIHIgPSBxLCBnID0gdiwgYiA9IHA7IAorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIDI6IAorICAgICAgICByID0gcCwgZyA9IHYsIGIgPSB0OyAK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAzOiAKKyAgICAgICAgciA9IHAsIGcgPSBxLCBiID0g
djsgCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNDogCisgICAgICAgIHIgPSB0LCBnID0gcCwg
YiA9IHY7IAorICAgICAgICBicmVhazsKKyAgICBjYXNlIDU6IAorICAgICAgICByID0gdiwgZyA9
IHAsIGIgPSBxOyAKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIHJldHVybiBbciAq
IDI1NSwgZyAqIDI1NSwgYiAqIDI1NSwgYV07Cit9OworCitXZWJJbnNwZWN0b3IuU3BlY3RydW0u
cmdiVG9IU1YgPSBmdW5jdGlvbihyLCBnLCBiLCBhKSB7CisgICAgciA9IHIgLyAyNTU7CisgICAg
ZyA9IGcgLyAyNTU7CisgICAgYiA9IGIgLyAyNTU7CisgICAgCisgICAgdmFyIG1heCA9IE1hdGgu
bWF4KHIsIGcsIGIpLCBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTsKKyAgICB2YXIgaCwgcywgdiA9
IG1heDsKKworICAgIHZhciBkID0gbWF4IC0gbWluOworICAgIHMgPSBtYXggPyBkIC8gbWF4IDog
MDsKKworICAgIGlmKG1heCA9PT0gbWluKSB7CisgICAgICAgIC8vIEFjaHJvbWF0aWMuCisgICAg
ICAgIGggPSAwOyAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN3aXRjaChtYXgpIHsKKyAg
ICAgICAgY2FzZSByOiAKKyAgICAgICAgICAgIGggPSAoZyAtIGIpIC8gZCArIChnIDwgYiA/IDYg
OiAwKTsgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBnOiAKKyAgICAgICAgICAg
IGggPSAoYiAtIHIpIC8gZCArIDI7IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
YjogCisgICAgICAgICAgICBoID0gKHIgLSBnKSAvIGQgKyA0OyAKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGggLz0gNjsKKyAgICB9CisgICAgcmV0dXJuIFtoLCBzLCB2
LCBhXTsKK307CisKK1dlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUgPSBmdW5jdGlvbihl
bGVtZW50LCBvbm1vdmUsIG9uc3RhcnQsIG9uc3RvcCkgeworCisgICAgdmFyIGRvYyA9IGRvY3Vt
ZW50OworICAgIHZhciBkcmFnZ2luZzsKKyAgICB2YXIgb2Zmc2V0OworICAgIHZhciBzY3JvbGxP
ZmZzZXQ7CisgICAgdmFyIG1heEhlaWdodDsKKyAgICB2YXIgbWF4V2lkdGg7CisKKyAgICBmdW5j
dGlvbiBwcmV2ZW50KGUpIAorICAgIHsKKyAgICAgICAgaWYgKGUuc3RvcFByb3BhZ2F0aW9uKQor
ICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgCisgICAgICAgIGlmIChl
LnByZXZlbnREZWZhdWx0KQorICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworICAgIH0K
KyAgICAKKyAgICBmdW5jdGlvbiBtb3ZlKGUpIAorICAgIHsKKyAgICAgICAgaWYgKGRyYWdnaW5n
KSB7CisgICAgICAgICAgICB2YXIgZHJhZ1ggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihlLnBhZ2VY
IC0gb2Zmc2V0LmxlZnQgKyBzY3JvbGxPZmZzZXQubGVmdCwgbWF4V2lkdGgpKTsKKyAgICAgICAg
ICAgIHZhciBkcmFnWSA9IE1hdGgubWF4KDAsIE1hdGgubWluKGUucGFnZVkgLSBvZmZzZXQudG9w
ICsgc2Nyb2xsT2Zmc2V0LnRvcCwgbWF4SGVpZ2h0KSk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGlmIChvbm1vdmUpCisgICAgICAgICAgICAgICAgb25tb3ZlKGVsZW1lbnQsIGRyYWdYLCBk
cmFnWSk7IAorICAgICAgICB9IAorICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBzdGFydChlKSAK
KyAgICB7IAorICAgICAgICB2YXIgcmlnaHRDbGljayA9IGUud2hpY2ggPyAoZS53aGljaCA9PT0g
MykgOiAoZS5idXR0b24gPT09IDIpOworICAgICAgICAKKyAgICAgICAgaWYgKCFyaWdodENsaWNr
ICYmICFkcmFnZ2luZykgeyAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG9uc3RhcnQp
CisgICAgICAgICAgICAgICAgb25zdGFydChlbGVtZW50LCBlKQorICAgICAgICAgICAgCisgICAg
ICAgICAgICBkcmFnZ2luZyA9IHRydWU7IAorICAgICAgICAgICAgbWF4SGVpZ2h0ID0gZWxlbWVu
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBtYXhXaWR0aCA9IGVsZW1lbnQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHNjcm9sbE9mZnNldCA9IGVsZW1lbnQuc2Ny
b2xsT2Zmc2V0KCk7CisgICAgICAgICAgICBvZmZzZXQgPSBlbGVtZW50LnRvdGFsT2Zmc2V0KCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkb2MuYWRkRXZlbnRM
aXN0ZW5lcigic2VsZWN0c3RhcnQiLCBwcmV2ZW50LCBmYWxzZSk7CisgICAgICAgICAgICBkb2Mu
YWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IiwgcHJldmVudCwgZmFsc2UpOworICAgICAgICAg
ICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIG1vdmUsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGRvYy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgc3RvcCwgZmFsc2UpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBwcmV2ZW50KGUpOworICAgICAgICB9CisgICAgfQorICAg
IAorICAgIGZ1bmN0aW9uIHN0b3AoZSkgCisgICAgeyAKKyAgICAgICAgaWYgKGRyYWdnaW5nKSB7
IAorICAgICAgICAgICAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlbGVjdHN0YXJ0IiwgcHJl
dmVudCwgZmFsc2UpOworICAgICAgICAgICAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRyYWdz
dGFydCIsIHByZXZlbnQsIGZhbHNlKTsKKyAgICAgICAgICAgIGRvYy5yZW1vdmVFdmVudExpc3Rl
bmVyKCJtb3VzZW1vdmUiLCBtb3ZlLCBmYWxzZSk7CisgICAgICAgICAgICBkb2MucmVtb3ZlRXZl
bnRMaXN0ZW5lcigibW91c2V1cCIsIHN0b3AsIGZhbHNlKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYgKG9uc3RvcCkKKyAgICAgICAgICAgICAgICBvbnN0b3AoZWxlbWVudCwgZSk7IAor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkcmFnZ2luZyA9IGZhbHNlOyAKKyAgICB9Cisg
ICAgCisgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCBzdGFydCwgZmFs
c2UpOworfTsKKworV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZSA9IHsKKyAgICBzZXQg
Y29sb3IoY29sb3IpCisgICAgeworICAgICAgICB2YXIgcmdiYSA9IChjb2xvci5yZ2JhIHx8IGNv
bG9yLnJnYikuc2xpY2UoMCk7CisgICAgICAgIAorICAgICAgICBpZiAocmdiYS5sZW5ndGggPT09
IDMpCisgICAgICAgICAgICByZ2JhWzNdID0gMTsKKyAgICAgICAgICAgIAorICAgICAgICB0aGlz
LmhzdiA9IFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5yZ2JUb0hTVihyZ2JhWzBdLCByZ2JhWzFdLCBy
Z2JhWzJdLCByZ2JhWzNdKTsKKyAgICB9LAorCisgICAgZ2V0IGNvbG9yKCkKKyAgICB7CisgICAg
ICAgIHZhciByZ2IgPSBXZWJJbnNwZWN0b3IuU3BlY3RydW0uaHN2VG9SR0IodGhpcy5oc3ZbMF0s
IHRoaXMuaHN2WzFdLCB0aGlzLmhzdlsyXSwgdGhpcy5oc3ZbM10pOworICAgICAgICB2YXIgcm91
bmQgPSBbTWF0aC5yb3VuZChyZ2JbMF0pLCBNYXRoLnJvdW5kKHJnYlsxXSksIE1hdGgucm91bmQo
cmdiWzJdKSwgcmdiWzNdXTsKKyAgICAgICAgCisgICAgICAgIGlmIChyZ2JbM10gPT09IDEpCisg
ICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0Iocm91bmRbMF0sIHJv
dW5kWzFdLCByb3VuZFsyXSwgcm91bmRbM10pOworICAgICAgICAgICAgCisgICAgICAgIHJldHVy
biBXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVJHQkEocm91bmRbMF0sIHJvdW5kWzFdLCByb3VuZFsy
XSwgcm91bmRbM10pOworICAgIH0sCisgICAgCisgICAgZ2V0IGNvbG9ySHVlT25seSgpCisgICAg
eworICAgICAgICB2YXIgcmdiID0gV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmhzdlRvUkdCKHRoaXMu
aHN2WzBdLCAxLCAxKTsKKyAgICAgICAgdmFyIHJvdW5kID0gW01hdGgucm91bmQocmdiWzBdKSwg
TWF0aC5yb3VuZChyZ2JbMV0pLCBNYXRoLnJvdW5kKHJnYlsyXSksIHJnYlszXV07CisgICAgICAg
IAorICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKHJvdW5kWzBdLCBy
b3VuZFsxXSwgcm91bmRbMl0sIHJvdW5kWzNdKTsKKyAgICB9LAorICAgIAorICAgIHNldCBkaXNw
bGF5VGV4dCh0ZXh0KSAKKyAgICB7CisgICAgICAgIHRoaXMuX2Rpc3BsYXlFbGVtZW50LnRleHRD
b250ZW50ID0gdGV4dDsKKyAgICB9LAorICAgIAorICAgIF9vbmNoYW5nZTogZnVuY3Rpb24oKSB7
CisgICAgICAgIHRoaXMuX3VwZGF0ZVVJKCk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKCJjaGFuZ2UiLCB0aGlzLmNvbG9yKTsKKyAgICB9LAorICAgIAorCisgICAgX3Vw
ZGF0ZUhlbHBlckxvY2F0aW9uczogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBoID0gdGhpcy5o
c3ZbMF07CisgICAgICAgIHZhciBzID0gdGhpcy5oc3ZbMV07CisgICAgICAgIHZhciB2ID0gdGhp
cy5oc3ZbMl07CisgICAgICAgIAorICAgICAgICAvLyBXaGVyZSB0byBzaG93IHRoZSBsaXR0bGUg
Y2lyY2xlIGluIHRoYXQgZGlzcGxheXMgeW91ciBjdXJyZW50IHNlbGVjdGVkIGNvbG9yLgorICAg
ICAgICB2YXIgZHJhZ1ggPSBzICogdGhpcy5kcmFnV2lkdGg7CisgICAgICAgIHZhciBkcmFnWSA9
IHRoaXMuZHJhZ0hlaWdodCAtICh2ICogdGhpcy5kcmFnSGVpZ2h0KTsKKyAgICAgICAgCisgICAg
ICAgIGRyYWdYID0gTWF0aC5tYXgoCisgICAgICAgICAgICAtdGhpcy5fZHJhZ0hlbHBlckVsZW1l
bnRIZWlnaHQsIAorICAgICAgICAgICAgTWF0aC5taW4odGhpcy5kcmFnV2lkdGggLSB0aGlzLl9k
cmFnSGVscGVyRWxlbWVudEhlaWdodCwgZHJhZ1ggLSB0aGlzLl9kcmFnSGVscGVyRWxlbWVudEhl
aWdodCkKKyAgICAgICAgKTsKKyAgICAgICAgZHJhZ1kgPSBNYXRoLm1heCgKKyAgICAgICAgICAg
IC10aGlzLl9kcmFnSGVscGVyRWxlbWVudEhlaWdodCwgCisgICAgICAgICAgICBNYXRoLm1pbih0
aGlzLmRyYWdIZWlnaHQgLSB0aGlzLl9kcmFnSGVscGVyRWxlbWVudEhlaWdodCwgZHJhZ1kgLSB0
aGlzLl9kcmFnSGVscGVyRWxlbWVudEhlaWdodCkKKyAgICAgICAgKTsKKyAgICAgICAgCisgICAg
ICAgIHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50LnBvc2l0aW9uQXQoZHJhZ1gsIGRyYWdZKTsKKyAg
ICAgICAgCisgICAgICAgIC8vIFdoZXJlIHRvIHNob3cgdGhlIGJhciB0aGF0IGRpc3BsYXlzIHlv
dXIgY3VycmVudCBzZWxlY3RlZCBodWUuCisgICAgICAgIHZhciBzbGlkZVkgPSAoaCAqIHRoaXMu
c2xpZGVIZWlnaHQpIC0gdGhpcy5zbGlkZUhlbHBlckhlaWdodDsKKyAgICAgICAgdGhpcy5zbGlk
ZUhlbHBlci5zdHlsZS50b3AgPSBzbGlkZVkgKyAicHgiOworICAgICAgICAKKyAgICAgICAgdGhp
cy5fYWxwaGFFbGVtZW50LnZhbHVlID0gdGhpcy5oc3ZbM10gKiAxMDA7CisgICAgfSwKKyAgICAK
KyAgICBfdXBkYXRlVUk6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLl91cGRhdGVIZWxwZXJM
b2NhdGlvbnMoKTsKKyAgICAgICAgCisgICAgICAgIHZhciByZ2IgPSAodGhpcy5jb2xvci5yZ2Jh
IHx8IHRoaXMuY29sb3IucmdiKS5zbGljZSgwKTsKKyAgICAgICAgCisgICAgICAgIGlmIChyZ2Iu
bGVuZ3RoID09PSAzKQorICAgICAgICAgICAgcmdiWzNdID0gMTsKKyAgICAgICAgICAgIAorICAg
ICAgICB2YXIgcmdiSHVlT25seSA9IHRoaXMuY29sb3JIdWVPbmx5LnJnYjsKKyAgICAgICAgCisg
ICAgICAgIHZhciBmbGF0Q29sb3IgPSAicmdiKCIgKyByZ2JIdWVPbmx5WzBdICsgIiwgIiArIHJn
Ykh1ZU9ubHlbMV0gKyAiLCAiICsgcmdiSHVlT25seVsyXSArICIpIjsKKyAgICAgICAgdmFyIGZ1
bGxDb2xvciA9ICJyZ2JhKCIgKyByZ2JbMF0gKyAiLCAiICsgcmdiWzFdICsgIiwgIiArIHJnYlsy
XSArICIsICIgKyByZ2JbM10gKyAiKSI7CisgICAgICAgIAorICAgICAgICB0aGlzLl9kcmFnZ2Vy
RWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBmbGF0Q29sb3I7CisgICAgICAgIHRoaXMu
X3N3YXRjaElubmVyRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBmdWxsQ29sb3I7Cisg
ICAgICAgIAorICAgICAgICB0aGlzLl9hbHBoYUVsZW1lbnQudmFsdWUgPSB0aGlzLmhzdlszXSAq
IDEwMDsKKyAgICB9LAorICAgIAorICAgIHRvZ2dsZTogZnVuY3Rpb24oZWxlbWVudCwgY29sb3Ip
IHsKKyAgICAgICAgaWYgKHRoaXMuX2lzU2hvd24pIAorICAgICAgICAgICAgdGhpcy5oaWRlKCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuc2hvdyhlbGVtZW50LCBjb2xvcik7Cisg
ICAgICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2hvd247CisgICAgfSwKKyAgICAK
KyAgICBzaG93OiBmdW5jdGlvbihlbGVtZW50LCBjb2xvcikgeworICAgICAgICBpZiAodGhpcy5f
aXNTaG93bikKKyAgICAgICAgICAgIHRoaXMuaGlkZSgpOworICAgICAgICAgICAgIAorICAgICAg
ICB0aGlzLl9pc1Nob3duID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fcG9wb3Zlci5zaG93KHRoaXMu
X2NvbnRhaW5lckVsZW1lbnQsIGVsZW1lbnQpOworICAgICAgICAKKyAgICAgICAgZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5oaWRlUHJveHkpOworICAgICAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuaGlkZVByb3h5KTsKKyAgICAgICAg
CisgICAgICAgIHRoaXMuc2xpZGVIZWlnaHQgPSB0aGlzLl9zbGlkZXJFbGVtZW50Lm9mZnNldEhl
aWdodDsKKyAgICAgICAgdGhpcy5kcmFnV2lkdGggPSB0aGlzLl9kcmFnZ2VyRWxlbWVudC5vZmZz
ZXRXaWR0aDsKKyAgICAgICAgdGhpcy5kcmFnSGVpZ2h0ID0gdGhpcy5fZHJhZ2dlckVsZW1lbnQu
b2Zmc2V0SGVpZ2h0OworICAgICAgICB0aGlzLl9kcmFnSGVscGVyRWxlbWVudEhlaWdodCA9IHRo
aXMuX2RyYWdIZWxwZXJFbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgIHRoaXMuc2xp
ZGVIZWxwZXJIZWlnaHQgPSB0aGlzLnNsaWRlSGVscGVyLm9mZnNldEhlaWdodCAvIDI7CisgICAg
ICAgIAorICAgICAgICB0aGlzLmNvbG9yID0gY29sb3I7CisgICAgICAgIHRoaXMuX3VwZGF0ZVVJ
KCk7CisgICAgfSwKKyAgICAKKyAgICBoaWRlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVsZXRl
IHRoaXMuX2lzU2hvd247CisgICAgICAgIHRoaXMuX3BvcG92ZXIuaGlkZSgpOworICAgICAgICAK
KyAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5o
aWRlUHJveHkpOworICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRo
aXMuaGlkZVByb3h5KTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygi
aGlkZSIsIHRoaXMuY29sb3IpOworICAgICAgICAKKyAgICAgICAgCisgICAgICAgIC8vIE9ubHkg
d2FudCB0byBhbGxvdyBvbmUgaW5zdGFuY2UgdG8gYmUgb3BlbiBhdCBhIHRpbWUsIHNvIGNsZWFy
IG91dCBhbnkgCisgICAgICAgIC8vIGV4aXN0aW5nIGV2ZW50IGxpc3RlbmVycy4KKyAgICAgICAg
dGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoKTsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuU3Bl
Y3RydW0ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNT
aWRlYmFyUGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
U2lkZWJhclBhbmUuanMKaW5kZXggNGUzYjNhZi4uZGE2ZjBlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCkBA
IC04OSw2ICs4OSw4IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZSA9IGZ1bmN0aW9u
KGNvbXB1dGVkU3R5bGVQYW5lKQogICAgIHRoaXMuX3NlY3Rpb25zQ29udGFpbmVyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5ib2R5RWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9zZWN0aW9uc0NvbnRhaW5lcik7CiAKKyAgICB0aGlzLl9zcGVjdHJ1bSA9IG5ldyBX
ZWJJbnNwZWN0b3IuU3BlY3RydW0odGhpcy5ib2R5RWxlbWVudCk7CisgICAgCiAgICAgV2ViSW5z
cGVjdG9yLmNzc01vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9k
ZWwuRXZlbnRzLlN0eWxlU2hlZXRDaGFuZ2VkLCB0aGlzLl9zdHlsZVNoZWV0Q2hhbmdlZCwgdGhp
cyk7CiAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkRPTUFnZW50LkV2ZW50cy5BdHRyTW9kaWZpZWQsIHRoaXMuX2F0dHJpYnV0ZXNNb2RpZmll
ZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5BdHRyUmVtb3ZlZCwgdGhpcy5fYXR0cmlidXRlc1Jl
bW92ZWQsIHRoaXMpOwpAQCAtMTYzMiwzMCArMTYzNCw4MiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQ
cm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB9IGNhdGNo
IChlKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSh0ZXh0KTsKICAgICAgICAgICAgICAgICB9Ci0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICB2YXIgaGFzQ29sb3JwaWNrZXIgPSBzZWxmLl9wYXJlbnRQYW5lOworICAgICAgICAg
ICAgICAgIHZhciBzcGVjdHJ1bSA9IGhhc0NvbG9ycGlja2VyICYmIHNlbGYuX3BhcmVudFBhbmUu
X3NwZWN0cnVtOworICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHZhciBzd2F0Y2hF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICAgICAgICAg
IHN3YXRjaEVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsaWNrIHRvIGNo
YW5nZSBjb2xvciBmb3JtYXQiKTsKKyAgICAgICAgICAgICAgICB2YXIgc3dhdGNoSW5uZXJFbGVt
ZW50ID0gc3dhdGNoRWxlbWVudC5jcmVhdGVDaGlsZCgic3BhbiIsICJzd2F0Y2gtaW5uZXIiKTsK
KyAgICAgICAgICAgICAgICBpZiAoaGFzQ29sb3JwaWNrZXIpCisgICAgICAgICAgICAgICAgICAg
IHN3YXRjaEVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsaWNrIHRvIG9w
ZW4gYSBjb2xvcnBpY2tlciIpOworICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBzd2F0Y2hFbGVtZW50LmNsYXNzTmFtZSA9ICJzd2F0Y2giOwotICAgICAgICAgICAgICAgIHN3
YXRjaEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoImJhY2tncm91bmQtY29sb3IiLCB0ZXh0KTsK
LQotICAgICAgICAgICAgICAgIHN3YXRjaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCBjaGFuZ2VDb2xvckRpc3BsYXksIGZhbHNlKTsKLSAgICAgICAgICAgICAgICBzd2F0Y2hFbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgZnVuY3Rpb24oZXZlbnQpIHsgZXZlbnQu
c3RvcFByb3BhZ2F0aW9uKCkgfSwgZmFsc2UpOwotCi0gICAgICAgICAgICAgICAgdmFyIGZvcm1h
dDsKLSAgICAgICAgICAgICAgICB2YXIgZm9ybWF0U2V0dGluZyA9IFdlYkluc3BlY3Rvci5zZXR0
aW5ncy5jb2xvckZvcm1hdC5nZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAoZm9ybWF0U2V0dGlu
ZyA9PT0gY2YuT3JpZ2luYWwpCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IGNmLk9yaWdp
bmFsOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFByZWZlcmVuY2VzLnNob3dDb2xvck5pY2tu
YW1lcyAmJiBjb2xvci5uaWNrbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2Yu
Tmlja25hbWU7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0U2V0dGluZyA9PT0gY2Yu
UkdCKQotICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3Iuc2ltcGxlID8gY2YuUkdC
IDogY2YuUkdCQSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0U2V0dGluZyA9PT0g
Y2YuSFNMKQotICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3Iuc2ltcGxlID8gY2Yu
SFNMIDogY2YuSFNMQSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoY29sb3Iuc2ltcGxlKQot
ICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3IuaGFzU2hvcnRIZXgoKSA/IGNmLlNo
b3J0SEVYIDogY2YuSEVYKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIGZvcm1hdCA9IGNmLlJHQkE7Ci0KKyAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHN0b3BQcm9wYWdhdGlvbiwgZmFsc2UpOworICAg
ICAgICAgICAgICAgIHN3YXRjaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBzd2F0
Y2hDbGljaywgZmFsc2UpOworICAgICAgICAgICAgICAgIHN3YXRjaEVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiZGJsY2xpY2siLCBzdG9wUHJvcGFnYXRpb24sIGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBzd2F0Y2hJbm5lckVsZW1lbnQuc3R5bGUuYmFja2dyb3Vu
ZENvbG9yID0gdGV4dDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmdW5jdGlv
biBzcGVjdHJ1bUNoYW5nZShlKSAKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGNvbG9yID0gZS5kYXRhOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIGNvbG9yU3RyaW5nID0gY29sb3IudG9TdHJpbmcoZ2V0Rm9ybWF0KCkpOworICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgY29sb3JWYWx1ZUVsZW1lbnQu
dGV4dENvbnRlbnQgPSBjb2xvclN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgc3BlY3RydW0u
ZGlzcGxheVRleHQgPSBjb2xvclN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgc3dhdGNoSW5u
ZXJFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGNvbG9yU3RyaW5nOworICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseVN0eWxlVGV4dChuYW1l
RWxlbWVudC50ZXh0Q29udGVudCArICI6ICIgKyB2YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQsIGZh
bHNlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBmdW5jdGlvbiBzcGVjdHJ1bUhpZGUoKSAKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwbHlTdHlsZVRleHQobmFtZUVsZW1lbnQu
dGV4dENvbnRlbnQgKyAiOiAiICsgdmFsdWVFbGVtZW50LnRleHRDb250ZW50LCB0cnVlLCB0cnVl
LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzZWxmLl9wYXJlbnRQYW5lLl9p
c0VkaXRpbmdTdHlsZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgZnVuY3Rpb24gc3dhdGNoQ2xpY2soZSkgCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAvLyBBbHQgKyBjbGljayB0b2dnbGVzIGNvbG9yIGZvcm1hdHMu
CisgICAgICAgICAgICAgICAgICAgIC8vIENsaWNrIG9wZW5zIGNvbG9ycGlja2VyLCBvbmx5IGlm
IHRoZSBlbGVtZW50IGlzIG5vdCBpbiBjb21wdXRlZCBzdHlsZXMgc2VjdGlvbi4KKyAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChlLmFsdEtleSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlQ29sb3JEaXNwbGF5KGUpOworICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGhhc0NvbG9ycGlja2VyKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgaXNTaG93biA9IHNwZWN0cnVtLnRvZ2dsZShzd2F0Y2hFbGVtZW50LCBjb2xvcik7Cisg
ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2hv
d24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3RydW0uZGlzcGxheVRleHQg
PSBjb2xvci50b1N0cmluZyhnZXRGb3JtYXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX3BhcmVudFBhbmUuX2lzRWRpdGluZ1N0eWxlID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3BlY3RydW0uYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgc3Bl
Y3RydW1DaGFuZ2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdHJ1bS5hZGRF
dmVudExpc3RlbmVyKCJoaWRlIiwgc3BlY3RydW1IaWRlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICB2YXIgZm9ybWF0ID0gZ2V0Rm9ybWF0KCk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gZ2V0Rm9ybWF0KCkgCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybWF0OworICAgICAgICAg
ICAgICAgICAgICB2YXIgZm9ybWF0U2V0dGluZyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb2xv
ckZvcm1hdC5nZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdFNldHRpbmcgPT09
IGNmLk9yaWdpbmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuT3JpZ2lu
YWw7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFByZWZlcmVuY2VzLnNob3dDb2xvck5p
Y2tuYW1lcyAmJiBjb2xvci5uaWNrbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1h
dCA9IGNmLk5pY2tuYW1lOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3JtYXRTZXR0
aW5nID09PSBjZi5SR0IpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3Iu
c2ltcGxlID8gY2YuUkdCIDogY2YuUkdCQSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGZvcm1hdFNldHRpbmcgPT09IGNmLkhTTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1h
dCA9IChjb2xvci5zaW1wbGUgPyBjZi5IU0wgOiBjZi5IU0xBKTsKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoY29sb3Iuc2ltcGxlKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0
ID0gKGNvbG9yLmhhc1Nob3J0SGV4KCkgPyBjZi5TaG9ydEhFWCA6IGNmLkhFWCk7CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IGNmLlJH
QkE7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZvcm1hdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgdmFyIGNvbG9yVmFsdWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOwogICAgICAgICAgICAgICAgIGNvbG9yVmFsdWVFbGVtZW50LnRleHRDb250ZW50ID0gY29s
b3IudG9TdHJpbmcoZm9ybWF0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9XZWJLaXQucXJjCmluZGV4IDYxNDJhZjMuLjI1Y2YzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTEyNiw2ICsxMjYsNyBAQAog
ICAgIDxmaWxlPlNvdXJjZUhUTUxUb2tlbml6ZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+U291cmNl
SmF2YVNjcmlwdFRva2VuaXplci5qczwvZmlsZT4KICAgICA8ZmlsZT5Tb3VyY2VUb2tlbml6ZXIu
anM8L2ZpbGU+CisgICAgPGZpbGU+U3BlY3RydW0uanM8L2ZpbGU+CiAgICAgPGZpbGU+U3BsaXRW
aWV3LmpzPC9maWxlPgogICAgIDxmaWxlPlN0YXR1c0JhckJ1dHRvbi5qczwvZmlsZT4KICAgICA8
ZmlsZT5TdHlsZXNTaWRlYmFyUGFuZS5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCA4Y2UzNjA5Li4wYWZiMmQ3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
Y3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNz
cwpAQCAtMTQyOSw2ICsxNDI5LDEzIEBAIGxpLmVkaXRpbmcgLnN3YXRjaCwgbGkuZWRpdGluZyAu
ZW5hYmxlZC1idXR0b24sICBsaS5lZGl0aW5nLXN1Yi1wYXJ0IC5kZWxldGUtYnV0CiAgICAgd2lk
dGg6IDFlbTsKICAgICBoZWlnaHQ6IDFlbTsKICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEy
OCwgMTI4LCAxMjgsIDAuNik7CisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKEltYWdlcy9jaGVj
a2VyLnBuZyk7Cit9CisKKy5zd2F0Y2gtaW5uZXIgeyAKKyAgICB3aWR0aDogMTAwJTsKKyAgICBo
ZWlnaHQ6IDEwMCU7CisgICAgZGlzcGxheTogYmxvY2s7CiB9CiAKIC5zd2F0Y2g6aG92ZXIgewpA
QCAtMjY1NiwzICsyNjYzLDEwNyBAQCBib2R5LnBsYXRmb3JtLW1hYyAjZHJhd2VyLXN0YXR1cy1i
YXIgLnNlYXJjaC1zdGF0dXMtYmFyLXByb2dyZXNzIHsKICAgICBib3JkZXItY29sb3I6IHRyYW5z
cGFyZW50OwogICAgIGJvcmRlci13aWR0aDogMCAwIDExcHggMDsKIH0KKworLyogaHR0cHM6Ly9n
aXRodWIuY29tL2Jncmlucy9zcGVjdHJ1bSAqLworLnNwZWN0cnVtLWNvbnRhaW5lciB7IAorICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsgCisgICAgdG9wOiAwOyAKKyAgICBsZWZ0OiAwOyAKKyAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgYmFja2dyb3VuZDogcmdiYSgyMzAsIDIzMCwgMjMw
LCAxKSAhaW1wb3J0YW50OworICAgIGJvcmRlcjogMXB4IHNvbGlkICM2NDY0NjQ7CisgICAgcGFk
ZGluZzogMTBweDsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgei1pbmRleDogMTA7Cit9CisKKy5z
cGVjdHJ1bS10b3AgeworICBwb3NpdGlvbjogcmVsYXRpdmU7IAorICB3aWR0aDogMTAwJTsKKyAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworfQorCisuc3BlY3RydW0tY29sb3IgeyAKKyAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOworICAgIGxlZnQ6IDA7CisgICAgYm90dG9tOiAw
OworICAgIHJpZ2h0OiAyMCU7Cit9Cisuc3BlY3RydW0taHVlIHsKKyAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgdG9wOiAwOworICAgIHJpZ2h0OiAwOworICAgIGJvdHRvbTogMDsKKyAgICBs
ZWZ0OiA4MyU7Cit9CisKKy5zcGVjdHJ1bS1maWxsIHsgCisgICAgLyogU2FtZSBhcyBzcGVjdHJ1
bS1jb2xvciB3aWR0aCB0byBmb3JjZSBhc3BlY3QgcmF0aW8uICovCisgICAgbWFyZ2luLXRvcDog
ODAlOyAKK30KKworLnNwZWN0cnVtLXNhdCwgLnNwZWN0cnVtLXZhbCwgLnNwZWN0cnVtLXRvcC1p
bm5lciB7IAorICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgCisgICAgdG9wOiAwOyAKKyAgICBsZWZ0
OiAwOyAKKyAgICByaWdodDogMDsgCisgICAgYm90dG9tOiAwOyAKK30KKworLnNwZWN0cnVtLXJh
bmdlLWNvbnRhaW5lciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHBhZGRpbmctdG9w
OiAxMHB4OworfQorCisuc3BlY3RydW0tcmFuZ2UtY29udGFpbmVyICogeworICAgIGZvbnQtc2l6
ZTogOXB4OworICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cit9CisKKy5zcGVjdHJ1bS1yYW5n
ZS1jb250YWluZXIgbGFiZWwgeworICAgIHdpZHRoOiAzMnB4OworICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKK30KKworLnNwZWN0cnVtLXJhbmdlLWNvbnRhaW5lciBpbnB1dCB7IAorICAgIHdp
ZHRoOiAxMzBweDsgCit9CisKKy5zd2F0Y2gsIC5zcGVjdHJ1bS1kcmFnZ2VyLCAuc3BlY3RydW0t
c2xpZGVyIHsgCisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKK30KKworLnNwZWN0cnVt
LXNhdCB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVm
dCwgd2hpdGUsIHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpOworfQorCisuc3BlY3RydW0tdmFsIHsK
KyAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChib3R0b20sIGJs
YWNrLCByZ2JhKDIwNCwgMTU0LCAxMjksIDApKTsKK30KKworLnNwZWN0cnVtLWh1ZSB7CisgICAg
YmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZmYwMDAwIDAlLCAjZmZm
ZjAwIDE3JSwgIzAwZmYwMCAzMyUsICMwMGZmZmYgNTAlLCAjMDAwMGZmIDY3JSwgI2ZmMDBmZiA4
MyUsICNmZjAwMDAgMTAwJSk7Cit9CisKKy5zcGVjdHJ1bS1kcmFnZ2VyIHsKKyAgIGJvcmRlci1y
YWRpdXM6IDVweDsgCisgICBoZWlnaHQ6IDVweDsgCisgICB3aWR0aDogNXB4OyAKKyAgIGJvcmRl
cjogc29saWQgYmxhY2sgM3B4OworICAgY3Vyc29yOiBwb2ludGVyOworICAgcG9zaXRpb246IGFi
c29sdXRlOyAKKyAgIHRvcDogMDsgCisgICBsZWZ0OiAwOworfQorCisuc3BlY3RydW0tc2xpZGVy
IHsgCisgICAgcG9zaXRpb246IGFic29sdXRlOyAKKyAgICB0b3A6IDA7IAorICAgIGN1cnNvcjog
cG9pbnRlcjsKKyAgICBoZWlnaHQ6IDVweDsgCisgICAgd2lkdGg6IDExMCU7CisgICAgbWFyZ2lu
LWxlZnQ6IC01JTsKKyAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsgCisgICAgb3BhY2l0eTogLjg7IAor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0
bWwKaW5kZXggNzcwZjQwMi4uNTBlYzliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC04MSw2ICs4MSw3IEBAIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQXBwbGljYXRpb25DYWNo
ZU1vZGVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJBcHBsaWNhdGlvbkNhY2hlSXRlbXNWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTY3JpcHQuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNwZWN0cnVtLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTaWRlYmFyUGFuZS5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRWxlbWVu
dHNUcmVlT3V0bGluZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iRE9NUHJlc2VudGF0aW9uVXRpbHMuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwppbmRleCA1MGYyODY5
Li44NGI2Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L3V0aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0
aWxpdGllcy5qcwpAQCAtMjgxLDYgKzI4MSwyOCBAQCBFbGVtZW50LnByb3RvdHlwZS50b3RhbE9m
ZnNldFRvcCA9IGZ1bmN0aW9uKCkKICAgICByZXR1cm4gdG90YWw7CiB9CiAKK0VsZW1lbnQucHJv
dG90eXBlLnRvdGFsT2Zmc2V0ID0gZnVuY3Rpb24ocGFyZW50KSAKK3sKKyAgICB2YXIgdG90YWxM
ZWZ0ID0gMDsKKyAgICB2YXIgdG90YWxUb3AgPSAwOworICAgIGZvciAodmFyIGVsZW1lbnQgPSB0
aGlzOyBlbGVtZW50ICYmIGVsZW1lbnQgIT09IHBhcmVudDsgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50KSB7CisgICAgICAgIHRvdGFsTGVmdCArPSBlbGVtZW50Lm9mZnNldExlZnQgKyAo
dGhpcyAhPT0gZWxlbWVudCA/IGVsZW1lbnQuY2xpZW50TGVmdCA6IDApOworICAgICAgICB0b3Rh
bFRvcCArPSBlbGVtZW50Lm9mZnNldFRvcCArICh0aGlzICE9PSBlbGVtZW50ID8gZWxlbWVudC5j
bGllbnRUb3AgOiAwKTsKKyAgICB9CisgICAgcmV0dXJuIHsgbGVmdDogdG90YWxMZWZ0LCB0b3A6
IHRvdGFsVG9wIH07Cit9CisKK0VsZW1lbnQucHJvdG90eXBlLnNjcm9sbE9mZnNldCA9IGZ1bmN0
aW9uKCkgCit7CisgICAgdmFyIGN1ckxlZnQgPSAwOworICAgIHZhciBjdXJUb3AgPSAwOworICAg
IGZvciAodmFyIGVsZW1lbnQgPSB0aGlzOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgY3VyTGVmdCArPSBlbGVtZW50LnNjcm9sbExlZnQ7CisgICAg
ICAgIGN1clRvcCArPSBlbGVtZW50LnNjcm9sbFRvcDsKKyAgICB9CisgICAgcmV0dXJuIHsgbGVm
dDogY3VyTGVmdCwgdG9wOiBjdXJUb3AgfTsKK30KKwogLyoqCiAgKiBAY29uc3RydWN0b3IKICAq
IEBwYXJhbSB7bnVtYmVyPX0geApAQCAtODc3LDYgKzg5OSwxMCBAQCBmdW5jdGlvbiBpc0VudGVy
S2V5KGV2ZW50KSB7CiAgICAgcmV0dXJuIGV2ZW50LmtleUNvZGUgIT09IDIyOSAmJiBldmVudC5r
ZXlJZGVudGlmaWVyID09PSAiRW50ZXIiOwogfQogCitmdW5jdGlvbiBzdG9wUHJvcGFnYXRpb24o
ZSkgeworICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7Cit9CisKIC8qKgogICogQHBhcmFtIHtFbGVt
ZW50fSBlbGVtZW50CiAgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119233</attachid>
            <date>2011-12-14 09:23:15 -0800</date>
            <delta_ts>2012-01-02 18:09:59 -0800</delta_ts>
            <desc>Patch to provide colorpicker functionality inside of the styles sidebar for the web inspector frontend</desc>
            <filename>colorpicker.patch</filename>
            <type>text/plain</type>
            <size>33350</size>
            <attacher name="Brian Grinstead">briangrinstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkYzBjNGY4Li5jNmQ3NjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIg
QEAKKzIwMTEtMTItMTQgIGJncmlucyAgPGJyaWFuZ3JpbnN0ZWFkQGdtYWlsLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgY29sb3JwaWNrZXIgZnVuY3Rpb25hbGl0eSB0byBjb2xv
ciBzd2F0Y2hlcyBpbiBTdHlsZXMgU2lkZWJhci4KKyAgICAgICAgVGhpcyBtYWtlcyBpdCBlYXNp
ZXIgdG8gcGljayBzdHlsZXMsIGFuZCBvcGVucyB1cCBzb21lIHBvc3NpYmlsaXRpZXMgZm9yIG5l
YXQgY29sb3IgYmFzZWQKKyAgICAgICAgZmVhdHVyZXMgaW4gdGhlIGZ1dHVyZSAoZm9yIGV4YW1w
bGU6IHNlbGVjdGluZyBmcm9tIGEgJ3BhbGxldCcgb2YgY29sb3JzIGZvdW5kIGluIHRoZSBDU1Mp
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEyNjIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEVuZ2xp
c2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9Db2xvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2xvci5mcm9t
UkdCKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUG9wb3Zlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUG9wb3Zlci5w
cm90b3R5cGUuc2hvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUu
aGlkZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUuX3Bvc2l0aW9u
RWxlbWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TcGVjdHJ1bS5qczogQWRk
ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uaHVlRHJhZyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3BlY3RydW0uY29sb3JEcmFnKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
cGVjdHJ1bS5hbHBoYURyYWcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5oc3ZUb1JHQik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU3BlY3RydW0ucmdiVG9IU1YpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVt
LmRyYWdnYWJsZS5wcmV2ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFn
Z2FibGUubW92ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxlLnN0
YXJ0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUuc3RvcCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuc2V0IGNvbG9yKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuZ2V0IGNvbG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TcGVjdHJ1bS5wcm90b3R5cGUuZ2V0IGNvbG9ySHVlT25seSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLnNldCBkaXNwbGF5VGV4dCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLl9vbmNoYW5nZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLl91cGRhdGVIZWxwZXJMb2NhdGlvbnMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS5fdXBkYXRlVUkpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS50b2dnbGUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
cGVjdHJ1bS5wcm90b3R5cGUuaGlkZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9T
dHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFy
UGFuZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnBy
b3RvdHlwZS51cGRhdGVUaXRsZS4pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2Vi
S2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6Cisg
ICAgICAgICguc3dhdGNoKToKKyAgICAgICAgKC5zd2F0Y2gtaW5uZXIpOgorICAgICAgICAoLnNw
ZWN0cnVtLWNvbnRhaW5lcik6CisgICAgICAgICguc3BlY3RydW0tdG9wKToKKyAgICAgICAgKC5z
cGVjdHJ1bS1jb2xvcik6CisgICAgICAgICguc3BlY3RydW0taHVlKToKKyAgICAgICAgKC5zcGVj
dHJ1bS1maWxsKToKKyAgICAgICAgKC5zcGVjdHJ1bS1zYXQsIC5zcGVjdHJ1bS12YWwsIC5zcGVj
dHJ1bS10b3AtaW5uZXIpOgorICAgICAgICAoLnNwZWN0cnVtLXJhbmdlLWNvbnRhaW5lcik6Cisg
ICAgICAgICguc3BlY3RydW0tcmFuZ2UtY29udGFpbmVyICopOgorICAgICAgICAoLnNwZWN0cnVt
LXJhbmdlLWNvbnRhaW5lciBsYWJlbCk6CisgICAgICAgICguc3BlY3RydW0tcmFuZ2UtY29udGFp
bmVyIGlucHV0KToKKyAgICAgICAgKC5zd2F0Y2gsIC5zcGVjdHJ1bS1kcmFnZ2VyLCAuc3BlY3Ry
dW0tc2xpZGVyKToKKyAgICAgICAgKC5zcGVjdHJ1bS1zYXQpOgorICAgICAgICAoLnNwZWN0cnVt
LXZhbCk6CisgICAgICAgICguc3BlY3RydW0tZHJhZ2dlcik6CisgICAgICAgICguc3BlY3RydW0t
c2xpZGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzOgorICAgICAgICAoRWxl
bWVudC5wcm90b3R5cGUudG90YWxPZmZzZXQpOgorICAgICAgICAoRWxlbWVudC5wcm90b3R5cGUu
c2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKCk6CisKIDIwMTEtMTEtMjMgIFl1cnkgU2VtaWtoYXRz
a3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQnVpbGQgZml4
LiBBZGRlZCBtaXNzaW5nIEVOQUJMRShXT1JLRVJTKSBndWFyZHMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggY2ViMTFlYS4uYmUw
YmU0NSAxMDA2NDQKQmluYXJ5IGZpbGVzIGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9s
b2NhbGl6ZWRTdHJpbmdzLmpzIGFuZCBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9j
YWxpemVkU3RyaW5ncy5qcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiOWM3YWZmLi5iNzIy
ZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02NDIwLDYgKzY0MjAsNyBAQAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlSFRNTFRva2VuaXplci5qcycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VKYXZhU2NyaXB0VG9rZW5pemVyLmpzJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZVRva2VuaXplci5qcycsCisgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TcGVjdHJ1bS5qcycsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9TcGxpdFZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvU3RhdHVzQmFyQnV0dG9uLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYTFlYjY2Ni4uYjM3MmRjMyAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY5MjQ5LDYgKzY5
MjQ5LDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFNwZWN0cnVtLmpzIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVu
ZFxTcGxpdFZpZXcuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Db2xvci5qcwppbmRleCA2MjU4OGRmLi42YTAwZDY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanMKQEAgLTQ0LDYgKzQ0LDEx
IEBAIFdlYkluc3BlY3Rvci5Db2xvci5mcm9tUkdCQSA9IGZ1bmN0aW9uKHIsIGcsIGIsIGEpCiAg
ICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29sb3IoInJnYmEoIiArIHIgKyAiLCIgKyBnICsg
IiwiICsgYiArICIsIiArICh0eXBlb2YgYSA9PT0gInVuZGVmaW5lZCIgPyAxIDogYSkgKyAiKSIp
OwogfQogCitXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVJHQiA9IGZ1bmN0aW9uKHIsIGcsIGIpCit7
CisgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29sb3IoInJnYigiICsgciArICIsIiArIGcg
KyAiLCIgKyBiICsgIikiKTsKK30KKwogV2ViSW5zcGVjdG9yLkNvbG9yLnByb3RvdHlwZSA9IHsK
ICAgICBnZXQgc2hvcnRoZXgoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUG9wb3Zlci5qcwppbmRleCA0YmZkNmEzLi42ZTgxOGQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzCkBAIC0zMiw3ICszMiw3IEBA
CiAgKiBAY29uc3RydWN0b3IKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlBvcG92ZXJIZWxwZXI9
fSBwb3BvdmVySGVscGVyCiAgKi8KLVdlYkluc3BlY3Rvci5Qb3BvdmVyID0gZnVuY3Rpb24ocG9w
b3ZlckhlbHBlcikKK1dlYkluc3BlY3Rvci5Qb3BvdmVyID0gZnVuY3Rpb24ocG9wb3ZlckhlbHBl
ciwgYXBwZW5kRWxlbWVudCwgaGlkZU92ZXJmbG93KQogewogICAgIHRoaXMuZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUg
PSAicG9wb3ZlciBjdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIGN1c3RvbS1wb3B1cC1ob3Jp
em9udGFsLXNjcm9sbCI7CkBAIC00NSw2ICs0NSwxMiBAQCBXZWJJbnNwZWN0b3IuUG9wb3ZlciA9
IGZ1bmN0aW9uKHBvcG92ZXJIZWxwZXIpCiAgICAgdGhpcy5fY29udGVudERpdi5jbGFzc05hbWUg
PSAiY29udGVudCI7CiAgICAgdGhpcy5fdmlzaWJsZSA9IGZhbHNlOwogICAgIHRoaXMuX3BvcG92
ZXJIZWxwZXIgPSBwb3BvdmVySGVscGVyOworICAgIAorICAgIHRoaXMuX2FwcGVuZEVsZW1lbnQg
PSBhcHBlbmRFbGVtZW50IHx8IGRvY3VtZW50LmJvZHk7CisgICAgdGhpcy5faGlkZU92ZXJmbG93
ID0gaGlkZU92ZXJmbG93OworICAgIAorICAgIGlmIChoaWRlT3ZlcmZsb3cpCisgICAgICAgIHRo
aXMuX2NvbnRlbnREaXYuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsKIH0KIAogV2ViSW5zcGVj
dG9yLlBvcG92ZXIucHJvdG90eXBlID0gewpAQCAtNTYsMTggKzYyLDE4IEBAIFdlYkluc3BlY3Rv
ci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgaGFw
cGVuLCBidXQgd2UgaGlkZSBwcmV2aW91cyBwb3B1cCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlLgog
ICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLlBvcG92ZXIuX3BvcG92ZXJFbGVtZW50KQotICAgICAg
ICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChXZWJJbnNwZWN0b3IuUG9wb3Zlci5fcG9w
b3ZlckVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5fYXBwZW5kRWxlbWVudC5yZW1vdmVDaGls
ZChXZWJJbnNwZWN0b3IuUG9wb3Zlci5fcG9wb3ZlckVsZW1lbnQpOwogICAgICAgICBXZWJJbnNw
ZWN0b3IuUG9wb3Zlci5fcG9wb3ZlckVsZW1lbnQgPSB0aGlzLmVsZW1lbnQ7CiAKICAgICAgICAg
Ly8gVGVtcG9yYXJpbHkgYXR0YWNoIGluIG9yZGVyIHRvIG1lYXN1cmUgcHJlZmVycmVkIGRpbWVu
c2lvbnMuCiAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQucG9zaXRpb25BdCgwLCAwKTsKLSAg
ICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnRFbGVtZW50KTsKKyAg
ICAgICAgdGhpcy5fYXBwZW5kRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnRFbGVtZW50
KTsKICAgICAgICAgcHJlZmVycmVkV2lkdGggPSBwcmVmZXJyZWRXaWR0aCB8fCB0aGlzLmNvbnRl
bnRFbGVtZW50Lm9mZnNldFdpZHRoOwogICAgICAgICBwcmVmZXJyZWRIZWlnaHQgPSBwcmVmZXJy
ZWRIZWlnaHQgfHwgdGhpcy5jb250ZW50RWxlbWVudC5vZmZzZXRIZWlnaHQ7CiAKICAgICAgICAg
dGhpcy5fY29udGVudERpdi5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnRFbGVtZW50KTsKICAgICAg
ICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnREaXYpOwotICAgICAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7CisgICAgICAgIHRoaXMuX2Fw
cGVuZEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTsKICAgICAgICAgdGhpcy5fcG9z
aXRpb25FbGVtZW50KGFuY2hvciwgcHJlZmVycmVkV2lkdGgsIHByZWZlcnJlZEhlaWdodCk7CiAg
ICAgICAgIHRoaXMuX3Zpc2libGUgPSB0cnVlOwogICAgICAgICBpZiAodGhpcy5fcG9wb3Zlckhl
bHBlcikKQEAgLTc4LDcgKzg0LDcgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0g
ewogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5Qb3BvdmVyLl9wb3BvdmVyRWxlbWVu
dCkgewogICAgICAgICAgICAgZGVsZXRlIFdlYkluc3BlY3Rvci5Qb3BvdmVyLl9wb3BvdmVyRWxl
bWVudDsKLSAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50
KTsKKyAgICAgICAgICAgIHRoaXMuX2FwcGVuZEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5lbGVt
ZW50KTsKICAgICAgICAgfQogICAgICAgICB0aGlzLl92aXNpYmxlID0gZmFsc2U7CiAgICAgfSwK
QEAgLTEwMywxOSArMTA5LDI1IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsK
ICAgICBfcG9zaXRpb25FbGVtZW50OiBmdW5jdGlvbihhbmNob3JFbGVtZW50LCBwcmVmZXJyZWRX
aWR0aCwgcHJlZmVycmVkSGVpZ2h0KQogICAgIHsKICAgICAgICAgY29uc3QgYm9yZGVyV2lkdGgg
PSAyNTsKLSAgICAgICAgY29uc3Qgc2Nyb2xsZXJXaWR0aCA9IDExOworICAgICAgICBjb25zdCBz
Y3JvbGxlcldpZHRoID0gdGhpcy5faGlkZU92ZXJmbG93ID8gMCA6IDExOwogICAgICAgICBjb25z
dCBhcnJvd0hlaWdodCA9IDE1OwogICAgICAgICBjb25zdCBhcnJvd09mZnNldCA9IDEwOwogICAg
ICAgICBjb25zdCBib3JkZXJSYWRpdXMgPSAxMDsKIAogICAgICAgICAvLyBTa2lubnkgdG9vbHRp
cHMgYXJlIG5vdCBwcmV0dHksIHRoZWlyIGFycm93IGxvY2F0aW9uIGlzIG5vdCBuaWNlLgogICAg
ICAgICBwcmVmZXJyZWRXaWR0aCA9IE1hdGgubWF4KHByZWZlcnJlZFdpZHRoLCA1MCk7Ci0gICAg
ICAgIGNvbnN0IHRvdGFsV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDsKLSAgICAgICAgY29uc3Qg
dG90YWxIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7CisgICAgICAgIGNvbnN0IHRvdGFsV2lk
dGggPSB0aGlzLl9hcHBlbmRFbGVtZW50ID8gdGhpcy5fYXBwZW5kRWxlbWVudC5jbGllbnRXaWR0
aCA6IHdpbmRvdy5pbm5lcldpZHRoOworICAgICAgICBjb25zdCB0b3RhbEhlaWdodCA9IHRoaXMu
X2FwcGVuZEVsZW1lbnQgPyB0aGlzLl9hcHBlbmRFbGVtZW50LmNsaWVudEhlaWdodCA6IHdpbmRv
dy5pbm5lckhlaWdodDsKIAogICAgICAgICB2YXIgYW5jaG9yQm94ID0gYW5jaG9yRWxlbWVudC5i
b3hJbldpbmRvdyh3aW5kb3cpOwogICAgICAgICB2YXIgbmV3RWxlbWVudFBvc2l0aW9uID0geyB4
OiAwLCB5OiAwLCB3aWR0aDogcHJlZmVycmVkV2lkdGggKyBzY3JvbGxlcldpZHRoLCBoZWlnaHQ6
IHByZWZlcnJlZEhlaWdodCB9OwotCisgICAgICAgIAorICAgICAgICBpZiAodGhpcy5fYXBwZW5k
RWxlbWVudCkgeworICAgICAgICAgICAgdmFyIHJlbGF0aXZlT2Zmc2V0ID0gYW5jaG9yRWxlbWVu
dC50b3RhbE9mZnNldCh0aGlzLl9hcHBlbmRFbGVtZW50KTsKKyAgICAgICAgICAgIGFuY2hvckJv
eC54ID0gcmVsYXRpdmVPZmZzZXQubGVmdDsKKyAgICAgICAgICAgIGFuY2hvckJveC55ID0gcmVs
YXRpdmVPZmZzZXQudG9wOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICB2YXIgdmVydGlj
YWxBbGlnbm1lbnQ7CiAgICAgICAgIHZhciByb29tQWJvdmUgPSBhbmNob3JCb3gueTsKICAgICAg
ICAgdmFyIHJvb21CZWxvdyA9IHRvdGFsSGVpZ2h0IC0gYW5jaG9yQm94LnkgLSBhbmNob3JCb3gu
aGVpZ2h0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
cGVjdHJ1bS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3BlY3RydW0u
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJmYTc2YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3BlY3RydW0uanMK
QEAgLTAsMCArMSwzNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQnJpYW4gR3JpbnN0
ZWFkIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKK1dlYkluc3BlY3Rvci5TcGVjdHJ1bSA9IGZ1bmN0aW9u
KGNvbnRhaW5lcikKK3sKKyAgICB0aGlzLl9wb3BvdmVyID0gbmV3IFdlYkluc3BlY3Rvci5Qb3Bv
dmVyKG51bGwsIGNvbnRhaW5lciwgdHJ1ZSk7CisgICAgdGhpcy5fcG9wb3Zlci5lbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHN0b3BQcm9wYWdhdGlvbiwgZmFsc2UpOworICAg
IAorICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKyAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmNsYXNzTmFtZSA9ICJzcGVjdHJ1bS1j
b250YWluZXIiOworICAgIAorICAgIHZhciB0b3BFbGVtZW50ID0gdGhpcy5fY29udGFpbmVyRWxl
bWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVtLXRvcCIpOworICAgIHRvcEVsZW1lbnQu
Y3JlYXRlQ2hpbGQoImRpdiIsICJzcGVjdHJ1bS1maWxsIik7CisKKyAgICB2YXIgdG9wSW5uZXJF
bGVtZW50ID0gdG9wRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVtLXRvcC1pbm5l
ciIpOworICAgIHRoaXMuX2RyYWdnZXJFbGVtZW50ID0gdG9wSW5uZXJFbGVtZW50LmNyZWF0ZUNo
aWxkKCJkaXYiLCAic3BlY3RydW0tY29sb3IiKTsKKyAgICB0aGlzLl9kcmFnSGVscGVyRWxlbWVu
dCA9IHRoaXMuX2RyYWdnZXJFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0tc2F0
IikuY3JlYXRlQ2hpbGQoImRpdiIsICJzcGVjdHJ1bS12YWwiKS5jcmVhdGVDaGlsZCgiZGl2Iiwg
InNwZWN0cnVtLWRyYWdnZXIiKTsKKyAgICAKKyAgICB0aGlzLl9zbGlkZXJFbGVtZW50ID0gdG9w
SW5uZXJFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0taHVlIik7CisgICAgdGhp
cy5zbGlkZUhlbHBlciA9IHRoaXMuX3NsaWRlckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJz
cGVjdHJ1bS1zbGlkZXIiKTsKKyAgICAKKyAgICB2YXIgcmFuZ2VDb250YWluZXIgPSB0aGlzLl9j
b250YWluZXJFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0tcmFuZ2UtY29udGFp
bmVyIik7CisgICAgdmFyIGFscGhhTGFiZWwgPSByYW5nZUNvbnRhaW5lci5jcmVhdGVDaGlsZCgi
bGFiZWwiKTsKKyAgICBhbHBoYUxhYmVsLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJhbHBoYTogIik7CisgICAgCisgICAgdGhpcy5fYWxwaGFFbGVtZW50ID0gcmFuZ2VDb250
YWluZXIuY3JlYXRlQ2hpbGQoImlucHV0IiwgInNwZWN0cnVtLXJhbmdlIik7CisgICAgdGhpcy5f
YWxwaGFFbGVtZW50LnNldEF0dHJpYnV0ZSgidHlwZSIsICJyYW5nZSIpOworICAgIHRoaXMuX2Fs
cGhhRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1pbiIsICIwIik7CisgICAgdGhpcy5fYWxwaGFFbGVt
ZW50LnNldEF0dHJpYnV0ZSgibWF4IiwgIjEwMCIpOworICAgIHRoaXMuX2FscGhhRWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCBhbHBoYURyYWcuYmluZCh0aGlzKSwgZmFsc2UpOwor
ICAgIAorICAgIHZhciBzd2F0Y2hFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOworICAgIHN3YXRjaEVsZW1lbnQuY2xhc3NOYW1lID0gInN3YXRjaCI7CisgICAgdGhpcy5f
c3dhdGNoSW5uZXJFbGVtZW50ID0gc3dhdGNoRWxlbWVudC5jcmVhdGVDaGlsZCgic3BhbiIsICJz
d2F0Y2gtaW5uZXIiKTsKKyAgICAKKyAgICB2YXIgZGlzcGxheUNvbnRhaW5lciA9IHJhbmdlQ29u
dGFpbmVyLmNyZWF0ZUNoaWxkKCJkaXYiKTsKKyAgICAKKyAgICB2YXIgY29sb3JMYWJlbCA9IGRp
c3BsYXlDb250YWluZXIuY3JlYXRlQ2hpbGQoImxhYmVsIik7CisgICAgY29sb3JMYWJlbC50ZXh0
Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiY29sb3I6ICIpOworICAgIAorICAgIGRp
c3BsYXlDb250YWluZXIuYXBwZW5kQ2hpbGQoc3dhdGNoRWxlbWVudCk7CisgICAgCisgICAgdGhp
cy5fZGlzcGxheUVsZW1lbnQgPSBkaXNwbGF5Q29udGFpbmVyLmNyZWF0ZUNoaWxkKCJzcGFuIik7
CisgICAgCisgICAgV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmRyYWdnYWJsZSh0aGlzLl9zbGlkZXJF
bGVtZW50LCBodWVEcmFnLmJpbmQodGhpcykpOworICAgIFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5k
cmFnZ2FibGUodGhpcy5fZHJhZ2dlckVsZW1lbnQsIGNvbG9yRHJhZy5iaW5kKHRoaXMpKTsKKyAg
ICAKKyAgICBmdW5jdGlvbiBodWVEcmFnKGVsZW1lbnQsIGRyYWdYLCBkcmFnWSkgCisgICAgewor
ICAgICAgICB0aGlzLmhzdlswXSA9IChkcmFnWSAvIHRoaXMuc2xpZGVIZWlnaHQpOworICAgICAg
ICAKKyAgICAgICAgdGhpcy5fb25jaGFuZ2UoKTsgIAorICAgIH0KKyAgICAKKyAgICBmdW5jdGlv
biBjb2xvckRyYWcoZWxlbWVudCwgZHJhZ1gsIGRyYWdZKSAKKyAgICB7CisgICAgICAgIHRoaXMu
aHN2WzFdID0gZHJhZ1ggLyB0aGlzLmRyYWdXaWR0aDsKKyAgICAgICAgdGhpcy5oc3ZbMl0gPSAo
dGhpcy5kcmFnSGVpZ2h0IC0gZHJhZ1kpIC8gdGhpcy5kcmFnSGVpZ2h0OworICAgICAgICAKKyAg
ICAgICAgdGhpcy5fb25jaGFuZ2UoKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gYWxwaGFE
cmFnKCkgCisgICAgeworICAgICAgICB0aGlzLmhzdlszXSA9IHRoaXMuX2FscGhhRWxlbWVudC52
YWx1ZSAvIDEwMDsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX29uY2hhbmdlKCk7CisgICAgfQor
ICAgIAorICAgIHRoaXMuaGlkZVByb3h5ID0gdGhpcy5oaWRlLmJpbmQodGhpcyk7Cit9CisKK1dl
Ykluc3BlY3Rvci5TcGVjdHJ1bS5oc3ZUb1JHQiA9IGZ1bmN0aW9uKGgsIHMsIHYsIGEpIHsKKyAg
ICB2YXIgciwgZywgYjsKKyAgICAKKyAgICB2YXIgaSA9IE1hdGguZmxvb3IoaCAqIDYpOworICAg
IHZhciBmID0gaCAqIDYgLSBpOworICAgIHZhciBwID0gdiAqICgxIC0gcyk7CisgICAgdmFyIHEg
PSB2ICogKDEgLSBmICogcyk7CisgICAgdmFyIHQgPSB2ICogKDEgLSAoMSAtIGYpICogcyk7Cisg
ICAgCisgICAgc3dpdGNoKGkgJSA2KSB7CisgICAgY2FzZSAwOiAKKyAgICAgICAgciA9IHYsIGcg
PSB0LCBiID0gcDsgCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTogCisgICAgICAgIHIgPSBx
LCBnID0gdiwgYiA9IHA7IAorICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6IAorICAgICAgICBy
ID0gcCwgZyA9IHYsIGIgPSB0OyAKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAzOiAKKyAgICAg
ICAgciA9IHAsIGcgPSBxLCBiID0gdjsgCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNDogCisg
ICAgICAgIHIgPSB0LCBnID0gcCwgYiA9IHY7IAorICAgICAgICBicmVhazsKKyAgICBjYXNlIDU6
IAorICAgICAgICByID0gdiwgZyA9IHAsIGIgPSBxOyAKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIAorICAgIHJldHVybiBbciAqIDI1NSwgZyAqIDI1NSwgYiAqIDI1NSwgYV07Cit9OworCitX
ZWJJbnNwZWN0b3IuU3BlY3RydW0ucmdiVG9IU1YgPSBmdW5jdGlvbihyLCBnLCBiLCBhKSB7Cisg
ICAgciA9IHIgLyAyNTU7CisgICAgZyA9IGcgLyAyNTU7CisgICAgYiA9IGIgLyAyNTU7CisgICAg
CisgICAgdmFyIG1heCA9IE1hdGgubWF4KHIsIGcsIGIpLCBtaW4gPSBNYXRoLm1pbihyLCBnLCBi
KTsKKyAgICB2YXIgaCwgcywgdiA9IG1heDsKKworICAgIHZhciBkID0gbWF4IC0gbWluOworICAg
IHMgPSBtYXggPyBkIC8gbWF4IDogMDsKKworICAgIGlmKG1heCA9PT0gbWluKSB7CisgICAgICAg
IC8vIEFjaHJvbWF0aWMuCisgICAgICAgIGggPSAwOyAKKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICAgIHN3aXRjaChtYXgpIHsKKyAgICAgICAgY2FzZSByOiAKKyAgICAgICAgICAgIGggPSAoZyAt
IGIpIC8gZCArIChnIDwgYiA/IDYgOiAwKTsgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBnOiAKKyAgICAgICAgICAgIGggPSAoYiAtIHIpIC8gZCArIDI7IAorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgYjogCisgICAgICAgICAgICBoID0gKHIgLSBnKSAvIGQgKyA0
OyAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGggLz0gNjsKKyAgICB9
CisgICAgcmV0dXJuIFtoLCBzLCB2LCBhXTsKK307CisKK1dlYkluc3BlY3Rvci5TcGVjdHJ1bS5k
cmFnZ2FibGUgPSBmdW5jdGlvbihlbGVtZW50LCBvbm1vdmUsIG9uc3RhcnQsIG9uc3RvcCkgewor
CisgICAgdmFyIGRvYyA9IGRvY3VtZW50OworICAgIHZhciBkcmFnZ2luZzsKKyAgICB2YXIgb2Zm
c2V0OworICAgIHZhciBzY3JvbGxPZmZzZXQ7CisgICAgdmFyIG1heEhlaWdodDsKKyAgICB2YXIg
bWF4V2lkdGg7CisKKyAgICBmdW5jdGlvbiBwcmV2ZW50KGUpIAorICAgIHsKKyAgICAgICAgaWYg
KGUuc3RvcFByb3BhZ2F0aW9uKQorICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChlLnByZXZlbnREZWZhdWx0KQorICAgICAgICAgICAgZS5wcmV2
ZW50RGVmYXVsdCgpOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBtb3ZlKGUpIAorICAgIHsK
KyAgICAgICAgaWYgKGRyYWdnaW5nKSB7CisgICAgICAgICAgICB2YXIgZHJhZ1ggPSBNYXRoLm1h
eCgwLCBNYXRoLm1pbihlLnBhZ2VYIC0gb2Zmc2V0LmxlZnQgKyBzY3JvbGxPZmZzZXQubGVmdCwg
bWF4V2lkdGgpKTsKKyAgICAgICAgICAgIHZhciBkcmFnWSA9IE1hdGgubWF4KDAsIE1hdGgubWlu
KGUucGFnZVkgLSBvZmZzZXQudG9wICsgc2Nyb2xsT2Zmc2V0LnRvcCwgbWF4SGVpZ2h0KSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChvbm1vdmUpCisgICAgICAgICAgICAgICAgb25t
b3ZlKGVsZW1lbnQsIGRyYWdYLCBkcmFnWSk7IAorICAgICAgICB9IAorICAgIH0KKyAgICAKKyAg
ICBmdW5jdGlvbiBzdGFydChlKSAKKyAgICB7IAorICAgICAgICB2YXIgcmlnaHRDbGljayA9IGUu
d2hpY2ggPyAoZS53aGljaCA9PT0gMykgOiAoZS5idXR0b24gPT09IDIpOworICAgICAgICAKKyAg
ICAgICAgaWYgKCFyaWdodENsaWNrICYmICFkcmFnZ2luZykgeyAKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKG9uc3RhcnQpCisgICAgICAgICAgICAgICAgb25zdGFydChlbGVtZW50LCBl
KQorICAgICAgICAgICAgCisgICAgICAgICAgICBkcmFnZ2luZyA9IHRydWU7IAorICAgICAgICAg
ICAgbWF4SGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBtYXhXaWR0
aCA9IGVsZW1lbnQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHNjcm9s
bE9mZnNldCA9IGVsZW1lbnQuc2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgICAgICBvZmZzZXQgPSBl
bGVtZW50LnRvdGFsT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0c3RhcnQiLCBwcmV2ZW50LCBmYWxz
ZSk7CisgICAgICAgICAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IiwgcHJldmVu
dCwgZmFsc2UpOworICAgICAgICAgICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIs
IG1vdmUsIGZhbHNlKTsKKyAgICAgICAgICAgIGRvYy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVw
Iiwgc3RvcCwgZmFsc2UpOworICAgICAgICAgICAgCisgICAgICAgICAgICBwcmV2ZW50KGUpOwor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHN0b3AoZSkgCisgICAgeyAKKyAg
ICAgICAgaWYgKGRyYWdnaW5nKSB7IAorICAgICAgICAgICAgZG9jLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoInNlbGVjdHN0YXJ0IiwgcHJldmVudCwgZmFsc2UpOworICAgICAgICAgICAgZG9jLnJlbW92
ZUV2ZW50TGlzdGVuZXIoImRyYWdzdGFydCIsIHByZXZlbnQsIGZhbHNlKTsKKyAgICAgICAgICAg
IGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCBtb3ZlLCBmYWxzZSk7CisgICAg
ICAgICAgICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHN0b3AsIGZhbHNlKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG9uc3RvcCkKKyAgICAgICAgICAgICAgICBv
bnN0b3AoZWxlbWVudCwgZSk7IAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkcmFnZ2lu
ZyA9IGZhbHNlOyAKKyAgICB9CisgICAgCisgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZWRvd24iLCBzdGFydCwgZmFsc2UpOworfTsKKworV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnBy
b3RvdHlwZSA9IHsKKyAgICBzZXQgY29sb3IoY29sb3IpCisgICAgeworICAgICAgICB2YXIgcmdi
YSA9IChjb2xvci5yZ2JhIHx8IGNvbG9yLnJnYikuc2xpY2UoMCk7CisgICAgICAgIAorICAgICAg
ICBpZiAocmdiYS5sZW5ndGggPT09IDMpCisgICAgICAgICAgICByZ2JhWzNdID0gMTsKKyAgICAg
ICAgICAgIAorICAgICAgICB0aGlzLmhzdiA9IFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5yZ2JUb0hT
VihyZ2JhWzBdLCByZ2JhWzFdLCByZ2JhWzJdLCByZ2JhWzNdKTsKKyAgICB9LAorCisgICAgZ2V0
IGNvbG9yKCkKKyAgICB7CisgICAgICAgIHZhciByZ2IgPSBXZWJJbnNwZWN0b3IuU3BlY3RydW0u
aHN2VG9SR0IodGhpcy5oc3ZbMF0sIHRoaXMuaHN2WzFdLCB0aGlzLmhzdlsyXSwgdGhpcy5oc3Zb
M10pOworICAgICAgICB2YXIgcm91bmQgPSBbTWF0aC5yb3VuZChyZ2JbMF0pLCBNYXRoLnJvdW5k
KHJnYlsxXSksIE1hdGgucm91bmQocmdiWzJdKSwgcmdiWzNdXTsKKyAgICAgICAgCisgICAgICAg
IGlmIChyZ2JbM10gPT09IDEpCisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkNvbG9y
LmZyb21SR0Iocm91bmRbMF0sIHJvdW5kWzFdLCByb3VuZFsyXSwgcm91bmRbM10pOworICAgICAg
ICAgICAgCisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVJHQkEocm91bmRb
MF0sIHJvdW5kWzFdLCByb3VuZFsyXSwgcm91bmRbM10pOworICAgIH0sCisgICAgCisgICAgZ2V0
IGNvbG9ySHVlT25seSgpCisgICAgeworICAgICAgICB2YXIgcmdiID0gV2ViSW5zcGVjdG9yLlNw
ZWN0cnVtLmhzdlRvUkdCKHRoaXMuaHN2WzBdLCAxLCAxKTsKKyAgICAgICAgdmFyIHJvdW5kID0g
W01hdGgucm91bmQocmdiWzBdKSwgTWF0aC5yb3VuZChyZ2JbMV0pLCBNYXRoLnJvdW5kKHJnYlsy
XSksIHJnYlszXV07CisgICAgICAgIAorICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkNvbG9y
LmZyb21SR0JBKHJvdW5kWzBdLCByb3VuZFsxXSwgcm91bmRbMl0sIHJvdW5kWzNdKTsKKyAgICB9
LAorICAgIAorICAgIHNldCBkaXNwbGF5VGV4dCh0ZXh0KSAKKyAgICB7CisgICAgICAgIHRoaXMu
X2Rpc3BsYXlFbGVtZW50LnRleHRDb250ZW50ID0gdGV4dDsKKyAgICB9LAorICAgIAorICAgIF9v
bmNoYW5nZTogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuX3VwZGF0ZVVJKCk7CisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJjaGFuZ2UiLCB0aGlzLmNvbG9yKTsKKyAg
ICB9LAorICAgIAorCisgICAgX3VwZGF0ZUhlbHBlckxvY2F0aW9uczogZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHZhciBoID0gdGhpcy5oc3ZbMF07CisgICAgICAgIHZhciBzID0gdGhpcy5oc3ZbMV07
CisgICAgICAgIHZhciB2ID0gdGhpcy5oc3ZbMl07CisgICAgICAgIAorICAgICAgICAvLyBXaGVy
ZSB0byBzaG93IHRoZSBsaXR0bGUgY2lyY2xlIGluIHRoYXQgZGlzcGxheXMgeW91ciBjdXJyZW50
IHNlbGVjdGVkIGNvbG9yLgorICAgICAgICB2YXIgZHJhZ1ggPSBzICogdGhpcy5kcmFnV2lkdGg7
CisgICAgICAgIHZhciBkcmFnWSA9IHRoaXMuZHJhZ0hlaWdodCAtICh2ICogdGhpcy5kcmFnSGVp
Z2h0KTsKKyAgICAgICAgCisgICAgICAgIGRyYWdYID0gTWF0aC5tYXgoCisgICAgICAgICAgICAt
dGhpcy5fZHJhZ0hlbHBlckVsZW1lbnRIZWlnaHQsIAorICAgICAgICAgICAgTWF0aC5taW4odGhp
cy5kcmFnV2lkdGggLSB0aGlzLl9kcmFnSGVscGVyRWxlbWVudEhlaWdodCwgZHJhZ1ggLSB0aGlz
Ll9kcmFnSGVscGVyRWxlbWVudEhlaWdodCkKKyAgICAgICAgKTsKKyAgICAgICAgZHJhZ1kgPSBN
YXRoLm1heCgKKyAgICAgICAgICAgIC10aGlzLl9kcmFnSGVscGVyRWxlbWVudEhlaWdodCwgCisg
ICAgICAgICAgICBNYXRoLm1pbih0aGlzLmRyYWdIZWlnaHQgLSB0aGlzLl9kcmFnSGVscGVyRWxl
bWVudEhlaWdodCwgZHJhZ1kgLSB0aGlzLl9kcmFnSGVscGVyRWxlbWVudEhlaWdodCkKKyAgICAg
ICAgKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50LnBvc2l0aW9u
QXQoZHJhZ1gsIGRyYWdZKTsKKyAgICAgICAgCisgICAgICAgIC8vIFdoZXJlIHRvIHNob3cgdGhl
IGJhciB0aGF0IGRpc3BsYXlzIHlvdXIgY3VycmVudCBzZWxlY3RlZCBodWUuCisgICAgICAgIHZh
ciBzbGlkZVkgPSAoaCAqIHRoaXMuc2xpZGVIZWlnaHQpIC0gdGhpcy5zbGlkZUhlbHBlckhlaWdo
dDsKKyAgICAgICAgdGhpcy5zbGlkZUhlbHBlci5zdHlsZS50b3AgPSBzbGlkZVkgKyAicHgiOwor
ICAgICAgICAKKyAgICAgICAgdGhpcy5fYWxwaGFFbGVtZW50LnZhbHVlID0gdGhpcy5oc3ZbM10g
KiAxMDA7CisgICAgfSwKKyAgICAKKyAgICBfdXBkYXRlVUk6IGZ1bmN0aW9uKCkgeworICAgICAg
ICB0aGlzLl91cGRhdGVIZWxwZXJMb2NhdGlvbnMoKTsKKyAgICAgICAgCisgICAgICAgIHZhciBy
Z2IgPSAodGhpcy5jb2xvci5yZ2JhIHx8IHRoaXMuY29sb3IucmdiKS5zbGljZSgwKTsKKyAgICAg
ICAgCisgICAgICAgIGlmIChyZ2IubGVuZ3RoID09PSAzKQorICAgICAgICAgICAgcmdiWzNdID0g
MTsKKyAgICAgICAgICAgIAorICAgICAgICB2YXIgcmdiSHVlT25seSA9IHRoaXMuY29sb3JIdWVP
bmx5LnJnYjsKKyAgICAgICAgCisgICAgICAgIHZhciBmbGF0Q29sb3IgPSAicmdiKCIgKyByZ2JI
dWVPbmx5WzBdICsgIiwgIiArIHJnYkh1ZU9ubHlbMV0gKyAiLCAiICsgcmdiSHVlT25seVsyXSAr
ICIpIjsKKyAgICAgICAgdmFyIGZ1bGxDb2xvciA9ICJyZ2JhKCIgKyByZ2JbMF0gKyAiLCAiICsg
cmdiWzFdICsgIiwgIiArIHJnYlsyXSArICIsICIgKyByZ2JbM10gKyAiKSI7CisgICAgICAgIAor
ICAgICAgICB0aGlzLl9kcmFnZ2VyRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBmbGF0
Q29sb3I7CisgICAgICAgIHRoaXMuX3N3YXRjaElubmVyRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5k
Q29sb3IgPSBmdWxsQ29sb3I7CisgICAgICAgIAorICAgICAgICB0aGlzLl9hbHBoYUVsZW1lbnQu
dmFsdWUgPSB0aGlzLmhzdlszXSAqIDEwMDsKKyAgICB9LAorICAgIAorICAgIHRvZ2dsZTogZnVu
Y3Rpb24oZWxlbWVudCwgY29sb3IpIHsKKyAgICAgICAgaWYgKHRoaXMuX2lzU2hvd24pIAorICAg
ICAgICAgICAgdGhpcy5oaWRlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuc2hv
dyhlbGVtZW50LCBjb2xvcik7CisgICAgICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRoaXMuX2lz
U2hvd247CisgICAgfSwKKyAgICAKKyAgICBzaG93OiBmdW5jdGlvbihlbGVtZW50LCBjb2xvcikg
eworICAgICAgICBpZiAodGhpcy5faXNTaG93bikKKyAgICAgICAgICAgIHRoaXMuaGlkZSgpOwor
ICAgICAgICAgICAgIAorICAgICAgICB0aGlzLl9pc1Nob3duID0gdHJ1ZTsKKyAgICAgICAgdGhp
cy5fcG9wb3Zlci5zaG93KHRoaXMuX2NvbnRhaW5lckVsZW1lbnQsIGVsZW1lbnQpOworICAgICAg
ICAKKyAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5o
aWRlUHJveHkpOworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMu
aGlkZVByb3h5KTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuc2xpZGVIZWlnaHQgPSB0aGlzLl9z
bGlkZXJFbGVtZW50Lm9mZnNldEhlaWdodDsKKyAgICAgICAgdGhpcy5kcmFnV2lkdGggPSB0aGlz
Ll9kcmFnZ2VyRWxlbWVudC5vZmZzZXRXaWR0aDsKKyAgICAgICAgdGhpcy5kcmFnSGVpZ2h0ID0g
dGhpcy5fZHJhZ2dlckVsZW1lbnQub2Zmc2V0SGVpZ2h0OworICAgICAgICB0aGlzLl9kcmFnSGVs
cGVyRWxlbWVudEhlaWdodCA9IHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50Lm9mZnNldEhlaWdodCAv
IDI7CisgICAgICAgIHRoaXMuc2xpZGVIZWxwZXJIZWlnaHQgPSB0aGlzLnNsaWRlSGVscGVyLm9m
ZnNldEhlaWdodCAvIDI7CisgICAgICAgIAorICAgICAgICB0aGlzLmNvbG9yID0gY29sb3I7Cisg
ICAgICAgIHRoaXMuX3VwZGF0ZVVJKCk7CisgICAgfSwKKyAgICAKKyAgICBoaWRlOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2lzU2hvd247CisgICAgICAgIHRoaXMuX3BvcG92
ZXIuaGlkZSgpOworICAgICAgICAKKyAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5l
cigibW91c2Vkb3duIiwgdGhpcy5oaWRlUHJveHkpOworICAgICAgICB3aW5kb3cucmVtb3ZlRXZl
bnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuaGlkZVByb3h5KTsKKworICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycygiaGlkZSIsIHRoaXMuY29sb3IpOworICAgICAgICAKKyAgICAg
ICAgLy8gT25seSB3YW50IHRvIGFsbG93IG9uZSBpbnN0YW5jZSB0byBiZSBvcGVuIGF0IGEgdGlt
ZSwgc28gY2xlYXIgb3V0IGFueSAKKyAgICAgICAgLy8gZXhpc3RpbmcgZXZlbnQgbGlzdGVuZXJz
LgorICAgICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygpOworICAgIH0KK307CisKK1dlYklu
c3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVj
dC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwppbmRleCA0ZTNiM2FmLi43Nzc4YTE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5l
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJh
clBhbmUuanMKQEAgLTg5LDYgKzg5LDggQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5l
ID0gZnVuY3Rpb24oY29tcHV0ZWRTdHlsZVBhbmUpCiAgICAgdGhpcy5fc2VjdGlvbnNDb250YWlu
ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLmJvZHlFbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX3NlY3Rpb25zQ29udGFpbmVyKTsKIAorICAgIHRoaXMuX3NwZWN0
cnVtID0gbmV3IFdlYkluc3BlY3Rvci5TcGVjdHJ1bSh0aGlzLmJvZHlFbGVtZW50KTsKKyAgICAK
ICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVNb2RlbC5FdmVudHMuU3R5bGVTaGVldENoYW5nZWQsIHRoaXMuX3N0eWxlU2hlZXRD
aGFuZ2VkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkF0dHJNb2RpZmllZCwgdGhpcy5fYXR0cmli
dXRlc01vZGlmaWVkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkF0dHJSZW1vdmVkLCB0aGlzLl9h
dHRyaWJ1dGVzUmVtb3ZlZCwgdGhpcyk7CkBAIC0xNjMyLDMwICsxNjM0LDgyIEBAIFdlYkluc3Bl
Y3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKHRleHQpOwogICAgICAgICAgICAgICAgIH0KLQorICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIHZhciBoYXNDb2xvcnBpY2tlciA9IHNlbGYuX3BhcmVudFBhbmU7
CisgICAgICAgICAgICAgICAgdmFyIHNwZWN0cnVtID0gaGFzQ29sb3JwaWNrZXIgJiYgc2VsZi5f
cGFyZW50UGFuZS5fc3BlY3RydW07CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
dmFyIHN3YXRjaEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAg
ICAgICAgICAgICAgc3dhdGNoRWxlbWVudC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Q2xpY2sgdG8gY2hhbmdlIGNvbG9yIGZvcm1hdCIpOworICAgICAgICAgICAgICAgIHZhciBzd2F0
Y2hJbm5lckVsZW1lbnQgPSBzd2F0Y2hFbGVtZW50LmNyZWF0ZUNoaWxkKCJzcGFuIiwgInN3YXRj
aC1pbm5lciIpOworICAgICAgICAgICAgICAgIGlmIChoYXNDb2xvcnBpY2tlcikKKyAgICAgICAg
ICAgICAgICAgICAgc3dhdGNoRWxlbWVudC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Q2xpY2sgdG8gb3BlbiBhIGNvbG9ycGlja2VyIik7CisgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIHN3YXRjaEVsZW1lbnQuY2xhc3NOYW1lID0gInN3YXRjaCI7Ci0gICAgICAg
ICAgICAgICAgc3dhdGNoRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgiYmFja2dyb3VuZC1jb2xv
ciIsIHRleHQpOwotCi0gICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIGNoYW5nZUNvbG9yRGlzcGxheSwgZmFsc2UpOwotICAgICAgICAgICAgICAg
IHN3YXRjaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLCBmdW5jdGlvbihldmVu
dCkgeyBldmVudC5zdG9wUHJvcGFnYXRpb24oKSB9LCBmYWxzZSk7Ci0KLSAgICAgICAgICAgICAg
ICB2YXIgZm9ybWF0OwotICAgICAgICAgICAgICAgIHZhciBmb3JtYXRTZXR0aW5nID0gV2ViSW5z
cGVjdG9yLnNldHRpbmdzLmNvbG9yRm9ybWF0LmdldCgpOwotICAgICAgICAgICAgICAgIGlmIChm
b3JtYXRTZXR0aW5nID09PSBjZi5PcmlnaW5hbCkKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0
ID0gY2YuT3JpZ2luYWw7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoUHJlZmVyZW5jZXMuc2hv
d0NvbG9yTmlja25hbWVzICYmIGNvbG9yLm5pY2tuYW1lKQotICAgICAgICAgICAgICAgICAgICBm
b3JtYXQgPSBjZi5OaWNrbmFtZTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3JtYXRTZXR0
aW5nID09PSBjZi5SR0IpCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IChjb2xvci5zaW1w
bGUgPyBjZi5SR0IgOiBjZi5SR0JBKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3JtYXRT
ZXR0aW5nID09PSBjZi5IU0wpCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IChjb2xvci5z
aW1wbGUgPyBjZi5IU0wgOiBjZi5IU0xBKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjb2xv
ci5zaW1wbGUpCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IChjb2xvci5oYXNTaG9ydEhl
eCgpID8gY2YuU2hvcnRIRVggOiBjZi5IRVgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuUkdCQTsKLQorICAgICAgICAgICAgICAgIHN3YXRj
aEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgc3RvcFByb3BhZ2F0aW9uLCBm
YWxzZSk7CisgICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIHN3YXRjaENsaWNrLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIHN0b3BQcm9wYWdhdGlvbiwgZmFsc2UpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN3YXRjaElubmVyRWxlbWVudC5zdHls
ZS5iYWNrZ3JvdW5kQ29sb3IgPSB0ZXh0OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uIHNwZWN0cnVtQ2hhbmdlKGUpIAorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgY29sb3IgPSBlLmRhdGE7CisgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgICAgICB2YXIgY29sb3JTdHJpbmcgPSBjb2xvci50b1N0cmluZyhnZXRGb3Jt
YXQoKSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBjb2xvclZh
bHVlRWxlbWVudC50ZXh0Q29udGVudCA9IGNvbG9yU3RyaW5nOworICAgICAgICAgICAgICAgICAg
ICBzcGVjdHJ1bS5kaXNwbGF5VGV4dCA9IGNvbG9yU3RyaW5nOworICAgICAgICAgICAgICAgICAg
ICBzd2F0Y2hJbm5lckVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gY29sb3JTdHJpbmc7
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBzZWxmLmFwcGx5U3R5
bGVUZXh0KG5hbWVFbGVtZW50LnRleHRDb250ZW50ICsgIjogIiArIHZhbHVlRWxlbWVudC50ZXh0
Q29udGVudCwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHNwZWN0cnVtSGlkZSgpIAorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseVN0eWxlVGV4dChu
YW1lRWxlbWVudC50ZXh0Q29udGVudCArICI6ICIgKyB2YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQs
IHRydWUsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNlbGYuX3Bh
cmVudFBhbmUuX2lzRWRpdGluZ1N0eWxlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBzd2F0Y2hDbGljayhlKSAKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIEFsdCArIGNsaWNrIHRvZ2dsZXMgY29s
b3IgZm9ybWF0cy4KKyAgICAgICAgICAgICAgICAgICAgLy8gQ2xpY2sgb3BlbnMgY29sb3JwaWNr
ZXIsIG9ubHkgaWYgdGhlIGVsZW1lbnQgaXMgbm90IGluIGNvbXB1dGVkIHN0eWxlcyBzZWN0aW9u
LgorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKGUuYWx0S2V5
KQorICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlQ29sb3JEaXNwbGF5KGUpOworICAgICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChoYXNDb2xvcnBpY2tlcikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGlzU2hvd24gPSBzcGVjdHJ1bS50b2dnbGUoc3dhdGNoRWxlbWVudCwgY29s
b3IpOworICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChpc1Nob3duKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN0cnVtLmRpc3Bs
YXlUZXh0ID0gY29sb3IudG9TdHJpbmcoZ2V0Rm9ybWF0KCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9wYXJlbnRQYW5lLl9pc0VkaXRpbmdTdHlsZSA9IHRydWU7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN0cnVtLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5n
ZSIsIHNwZWN0cnVtQ2hhbmdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3Ry
dW0uYWRkRXZlbnRMaXN0ZW5lcigiaGlkZSIsIHNwZWN0cnVtSGlkZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdmFyIGZvcm1hdCA9IGdldEZvcm1hdCgp
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGdldEZvcm1hdCgp
IAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGZvcm1hdDsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIGZvcm1hdFNldHRpbmcgPSBXZWJJbnNwZWN0b3Iuc2V0dGlu
Z3MuY29sb3JGb3JtYXQuZ2V0KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChmb3JtYXRTZXR0
aW5nID09PSBjZi5PcmlnaW5hbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IGNm
Lk9yaWdpbmFsOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChQcmVmZXJlbmNlcy5zaG93
Q29sb3JOaWNrbmFtZXMgJiYgY29sb3Iubmlja25hbWUpCisgICAgICAgICAgICAgICAgICAgICAg
ICBmb3JtYXQgPSBjZi5OaWNrbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9y
bWF0U2V0dGluZyA9PT0gY2YuUkdCKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0g
KGNvbG9yLnNpbXBsZSA/IGNmLlJHQiA6IGNmLlJHQkEpOworICAgICAgICAgICAgICAgICAgICBl
bHNlIGlmIChmb3JtYXRTZXR0aW5nID09PSBjZi5IU0wpCisgICAgICAgICAgICAgICAgICAgICAg
ICBmb3JtYXQgPSAoY29sb3Iuc2ltcGxlID8gY2YuSFNMIDogY2YuSFNMQSk7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGNvbG9yLnNpbXBsZSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZvcm1hdCA9IChjb2xvci5oYXNTaG9ydEhleCgpID8gY2YuU2hvcnRIRVggOiBjZi5IRVgpOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQg
PSBjZi5SR0JBOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmb3JtYXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIHZhciBjb2xvclZhbHVlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNwYW4iKTsKICAgICAgICAgICAgICAgICBjb2xvclZhbHVlRWxlbWVudC50ZXh0Q29udGVu
dCA9IGNvbG9yLnRvU3RyaW5nKGZvcm1hdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCA2MTQyYWYzLi4yNWNmM2RhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0xMjYsNiArMTI2
LDcgQEAKICAgICA8ZmlsZT5Tb3VyY2VIVE1MVG9rZW5pemVyLmpzPC9maWxlPgogICAgIDxmaWxl
PlNvdXJjZUphdmFTY3JpcHRUb2tlbml6ZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+U291cmNlVG9r
ZW5pemVyLmpzPC9maWxlPgorICAgIDxmaWxlPlNwZWN0cnVtLmpzPC9maWxlPgogICAgIDxmaWxl
PlNwbGl0Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5TdGF0dXNCYXJCdXR0b24uanM8L2ZpbGU+
CiAgICAgPGZpbGU+U3R5bGVzU2lkZWJhclBhbmUuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKaW5kZXggOGNlMzYwOS4uODY3
MDNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmNzcwpAQCAtMTQyOSw2ICsxNDI5LDEzIEBAIGxpLmVkaXRpbmcgLnN3YXRjaCwgbGkuZWRp
dGluZyAuZW5hYmxlZC1idXR0b24sICBsaS5lZGl0aW5nLXN1Yi1wYXJ0IC5kZWxldGUtYnV0CiAg
ICAgd2lkdGg6IDFlbTsKICAgICBoZWlnaHQ6IDFlbTsKICAgICBib3JkZXI6IDFweCBzb2xpZCBy
Z2JhKDEyOCwgMTI4LCAxMjgsIDAuNik7CisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKEltYWdl
cy9jaGVja2VyLnBuZyk7Cit9CisKKy5zd2F0Y2gtaW5uZXIgeyAKKyAgICB3aWR0aDogMTAwJTsK
KyAgICBoZWlnaHQ6IDEwMCU7CisgICAgZGlzcGxheTogYmxvY2s7CiB9CiAKIC5zd2F0Y2g6aG92
ZXIgewpAQCAtMjY1NiwzICsyNjYzLDEwOCBAQCBib2R5LnBsYXRmb3JtLW1hYyAjZHJhd2VyLXN0
YXR1cy1iYXIgLnNlYXJjaC1zdGF0dXMtYmFyLXByb2dyZXNzIHsKICAgICBib3JkZXItY29sb3I6
IHRyYW5zcGFyZW50OwogICAgIGJvcmRlci13aWR0aDogMCAwIDExcHggMDsKIH0KKworLyogaHR0
cHM6Ly9naXRodWIuY29tL2Jncmlucy9zcGVjdHJ1bSAqLworLnNwZWN0cnVtLWNvbnRhaW5lciB7
IAorICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgCisgICAgdG9wOiAwOyAKKyAgICBsZWZ0OiAwOyAK
KyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgYmFja2dyb3VuZDogcmdiYSgyMzAsIDIz
MCwgMjMwLCAxKSAhaW1wb3J0YW50OworICAgIGJvcmRlcjogMXB4IHNvbGlkICM2NDY0NjQ7Cisg
ICAgcGFkZGluZzogMTBweDsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgei1pbmRleDogMTA7Cit9
CisKKy5zcGVjdHJ1bS10b3AgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgCisgICAgd2lkdGg6
IDEwMCU7CisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworfQorCisuc3BlY3RydW0tY29sb3Ig
eyAKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOworICAgIGxlZnQ6IDA7Cisg
ICAgYm90dG9tOiAwOworICAgIHJpZ2h0OiAyMCU7Cit9CisKKy5zcGVjdHJ1bS1odWUgeworICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgcmlnaHQ6IDA7CisgICAgYm90
dG9tOiAwOworICAgIGxlZnQ6IDgzJTsKK30KKworLnNwZWN0cnVtLWZpbGwgeyAKKyAgICAvKiBT
YW1lIGFzIHNwZWN0cnVtLWNvbG9yIHdpZHRoIHRvIGZvcmNlIGFzcGVjdCByYXRpby4gKi8KKyAg
ICBtYXJnaW4tdG9wOiA4MCU7IAorfQorCisuc3BlY3RydW0tc2F0LCAuc3BlY3RydW0tdmFsLCAu
c3BlY3RydW0tdG9wLWlubmVyIHsgCisgICAgcG9zaXRpb246IGFic29sdXRlOyAKKyAgICB0b3A6
IDA7IAorICAgIGxlZnQ6IDA7IAorICAgIHJpZ2h0OiAwOyAKKyAgICBib3R0b206IDA7IAorfQor
Cisuc3BlY3RydW0tcmFuZ2UtY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cisg
ICAgcGFkZGluZy10b3A6IDEwcHg7Cit9CisKKy5zcGVjdHJ1bS1yYW5nZS1jb250YWluZXIgKiB7
CisgICAgZm9udC1zaXplOiA5cHg7CisgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKK30KKwor
LnNwZWN0cnVtLXJhbmdlLWNvbnRhaW5lciBsYWJlbCB7CisgICAgd2lkdGg6IDMycHg7CisgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworfQorCisuc3BlY3RydW0tcmFuZ2UtY29udGFpbmVyIGlu
cHV0IHsgCisgICAgd2lkdGg6IDEzMHB4OyAKK30KKworLnN3YXRjaCwgLnNwZWN0cnVtLWRyYWdn
ZXIsIC5zcGVjdHJ1bS1zbGlkZXIgeyAKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwor
fQorCisuc3BlY3RydW0tc2F0IHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVh
ci1ncmFkaWVudChsZWZ0LCB3aGl0ZSwgcmdiYSgyMDQsIDE1NCwgMTI5LCAwKSk7Cit9CisKKy5z
cGVjdHJ1bS12YWwgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRp
ZW50KGJvdHRvbSwgYmxhY2ssIHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpOworfQorCisuc3BlY3Ry
dW0taHVlIHsKKyAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNm
ZjAwMDAgMCUsICNmZmZmMDAgMTclLCAjMDBmZjAwIDMzJSwgIzAwZmZmZiA1MCUsICMwMDAwZmYg
NjclLCAjZmYwMGZmIDgzJSwgI2ZmMDAwMCAxMDAlKTsKK30KKworLnNwZWN0cnVtLWRyYWdnZXIg
eworICAgIGJvcmRlci1yYWRpdXM6IDVweDsgCisgICAgaGVpZ2h0OiA1cHg7IAorICAgIHdpZHRo
OiA1cHg7IAorICAgIGJvcmRlcjogc29saWQgYmxhY2sgM3B4OworICAgIGN1cnNvcjogcG9pbnRl
cjsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7IAorICAgIHRvcDogMDsgCisgICAgbGVmdDogMDsK
K30KKworLnNwZWN0cnVtLXNsaWRlciB7IAorICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgCisgICAg
dG9wOiAwOyAKKyAgICBjdXJzb3I6IHBvaW50ZXI7CisgICAgaGVpZ2h0OiA1cHg7IAorICAgIHdp
ZHRoOiAxMTAlOworICAgIG1hcmdpbi1sZWZ0OiAtNSU7CisgICAgYmFja2dyb3VuZDogd2hpdGU7
IAorICAgIG9wYWNpdHk6IC44OyAKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IDc3MGY0MDIuLjUwZWM5YmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAt
ODEsNiArODEsNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9IkFwcGxpY2F0aW9uQ2FjaGVNb2RlbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQXBwbGljYXRpb25DYWNoZUl0ZW1zVmlldy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2NyaXB0
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJT
cGVjdHJ1bS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iU2lkZWJhclBhbmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IkVsZW1lbnRzVHJlZU91dGxpbmUuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRPTVByZXNlbnRhdGlvblV0aWxzLmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvdXRpbGl0aWVzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGls
aXRpZXMuanMKaW5kZXggNTBmMjg2OS4uODRiNmNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKQEAgLTI4MSw2ICsyODEsMjggQEAgRWxl
bWVudC5wcm90b3R5cGUudG90YWxPZmZzZXRUb3AgPSBmdW5jdGlvbigpCiAgICAgcmV0dXJuIHRv
dGFsOwogfQogCitFbGVtZW50LnByb3RvdHlwZS50b3RhbE9mZnNldCA9IGZ1bmN0aW9uKHBhcmVu
dCkgCit7CisgICAgdmFyIHRvdGFsTGVmdCA9IDA7CisgICAgdmFyIHRvdGFsVG9wID0gMDsKKyAg
ICBmb3IgKHZhciBlbGVtZW50ID0gdGhpczsgZWxlbWVudCAmJiBlbGVtZW50ICE9PSBwYXJlbnQ7
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICB0b3RhbExlZnQgKz0g
ZWxlbWVudC5vZmZzZXRMZWZ0ICsgKHRoaXMgIT09IGVsZW1lbnQgPyBlbGVtZW50LmNsaWVudExl
ZnQgOiAwKTsKKyAgICAgICAgdG90YWxUb3AgKz0gZWxlbWVudC5vZmZzZXRUb3AgKyAodGhpcyAh
PT0gZWxlbWVudCA/IGVsZW1lbnQuY2xpZW50VG9wIDogMCk7CisgICAgfQorICAgIHJldHVybiB7
IGxlZnQ6IHRvdGFsTGVmdCwgdG9wOiB0b3RhbFRvcCB9OworfQorCitFbGVtZW50LnByb3RvdHlw
ZS5zY3JvbGxPZmZzZXQgPSBmdW5jdGlvbigpIAoreworICAgIHZhciBjdXJMZWZ0ID0gMDsKKyAg
ICB2YXIgY3VyVG9wID0gMDsKKyAgICBmb3IgKHZhciBlbGVtZW50ID0gdGhpczsgZWxlbWVudDsg
ZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgIGN1ckxlZnQgKz0gZWxl
bWVudC5zY3JvbGxMZWZ0OworICAgICAgICBjdXJUb3AgKz0gZWxlbWVudC5zY3JvbGxUb3A7Cisg
ICAgfQorICAgIHJldHVybiB7IGxlZnQ6IGN1ckxlZnQsIHRvcDogY3VyVG9wIH07Cit9CisKIC8q
KgogICogQGNvbnN0cnVjdG9yCiAgKiBAcGFyYW0ge251bWJlcj19IHgKQEAgLTg3Nyw2ICs4OTks
MTAgQEAgZnVuY3Rpb24gaXNFbnRlcktleShldmVudCkgewogICAgIHJldHVybiBldmVudC5rZXlD
b2RlICE9PSAyMjkgJiYgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkVudGVyIjsKIH0KIAorZnVu
Y3Rpb24gc3RvcFByb3BhZ2F0aW9uKGUpIHsKKyAgICBlLnN0b3BQcm9wYWdhdGlvbigpOworfQor
CiAvKioKICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudAogICogQHBhcmFtIHtudW1iZXJ9IG9m
ZnNldAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120904</attachid>
            <date>2012-01-02 18:09:59 -0800</date>
            <delta_ts>2012-02-01 18:17:52 -0800</delta_ts>
            <desc>Add colorpicker functionality to color swatches in Styles Sidebar.</desc>
            <filename>spectrum-implementation.patch</filename>
            <type>text/plain</type>
            <size>27369</size>
            <attacher name="Brian Grinstead">briangrinstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4MWE5ZDFmLi41ZmRhYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkg
QEAKKzIwMTItMDEtMDIgIGJncmlucyAgPGJyaWFuZ3JpbnN0ZWFkQGdtYWlsLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBBZGQgY29sb3JwaWNrZXIgZnVuY3Rpb25hbGl0eSB0byBjb2xvciBzd2F0Y2hlcyBpbiBTdHls
ZXMgU2lkZWJhcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzEyNjIKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRp
bmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3BlY3RydW0uanM6IEFkZGVk
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmh1ZURyYWcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNwZWN0cnVtLmNvbG9yRHJhZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3Bl
Y3RydW0uYWxwaGFEcmFnKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uaHN2VG9SR0IpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNwZWN0cnVtLnJnYlRvSFNWKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5k
cmFnZ2FibGUucHJldmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dh
YmxlLm1vdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmRyYWdnYWJsZS5zdGFy
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxlLnN0b3ApOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmRyYWdnYWJsZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLnNldCBjb2xvcik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU3BlY3RydW0ucHJvdG90eXBlLmdldCBjb2xvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U3BlY3RydW0ucHJvdG90eXBlLmdldCBjb2xvckh1ZU9ubHkpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNwZWN0cnVtLnByb3RvdHlwZS5zZXQgZGlzcGxheVRleHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS5fb25jaGFuZ2UpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNwZWN0cnVtLnByb3RvdHlwZS5fdXBkYXRlSGVscGVyTG9jYXRpb25zKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuX3VwZGF0ZVVJKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUudG9nZ2xlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuc2hvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3Bl
Y3RydW0ucHJvdG90eXBlLmhpZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5
bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBh
bmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90
b3R5cGUudXBkYXRlVGl0bGUuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktp
dC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOgorICAg
ICAgICAoLnN3YXRjaCk6CisgICAgICAgICguc3dhdGNoLWlubmVyKToKKyAgICAgICAgKC5zcGVj
dHJ1bS1jb250YWluZXIpOgorICAgICAgICAoLnNwZWN0cnVtLXRvcCk6CisgICAgICAgICguc3Bl
Y3RydW0tY29sb3IpOgorICAgICAgICAoLnNwZWN0cnVtLWh1ZSk6CisgICAgICAgICguc3BlY3Ry
dW0tZmlsbCk6CisgICAgICAgICguc3BlY3RydW0tc2F0LCAuc3BlY3RydW0tdmFsLCAuc3BlY3Ry
dW0tdG9wLWlubmVyKToKKyAgICAgICAgKC5zcGVjdHJ1bS1yYW5nZS1jb250YWluZXIpOgorICAg
ICAgICAoLnNwZWN0cnVtLXJhbmdlLWNvbnRhaW5lciAqKToKKyAgICAgICAgKC5zcGVjdHJ1bS1y
YW5nZS1jb250YWluZXIgbGFiZWwpOgorICAgICAgICAoLnNwZWN0cnVtLXJhbmdlLWNvbnRhaW5l
ciBpbnB1dCk6CisgICAgICAgICguc3dhdGNoLCAuc3BlY3RydW0tZHJhZ2dlciwgLnNwZWN0cnVt
LXNsaWRlcik6CisgICAgICAgICguc3BlY3RydW0tc2F0KToKKyAgICAgICAgKC5zcGVjdHJ1bS12
YWwpOgorICAgICAgICAoLnNwZWN0cnVtLWRyYWdnZXIpOgorICAgICAgICAoLnNwZWN0cnVtLXNs
aWRlcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKwog
MjAxMi0wMS0wMiAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWly
YUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIEZpeCBjaHJvbWl1bSBtYWMgYnVpbGQgYWZ0ZXIg
cjEwMzkwNQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDgzMDVmY2UuLjM2OWVhMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTY0ODYsNiArNjQ4Niw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9Tb3VyY2VIVE1MVG9rZW5pemVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL1NvdXJjZUphdmFTY3JpcHRUb2tlbml6ZXIuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvU291cmNlVG9rZW5pemVyLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL1NwZWN0cnVtLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NwbGl0Vmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TdGF0
dXNCYXJCdXR0b24uanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
U2lkZWJhclBhbmUuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCBmOWZmOTQ3Li4xNzJjNDU2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzIwNzMsNiArNzIwNzMsMTAgQEAKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rv
clxmcm9udC1lbmRcU3BlY3RydW0uanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
IAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXHNwbGl0Vmlldy5jc3Mi
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TZXR0aW5ncy5qcwppbmRleCA5YmU5NWY4Li42ZTg0NmUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKQEAgLTQ0LDcgKzQ0LDggQEAg
dmFyIFByZWZlcmVuY2VzID0gewogICAgIGV4cG9zZVdvcmtlcnNJbnNwZWN0aW9uOiBmYWxzZSwK
ICAgICBhcHBsaWNhdGlvblRpdGxlOiAiV2ViIEluc3BlY3RvciAtICVzIiwKICAgICBzaG93SGVh
cFNuYXBzaG90T2JqZWN0c0hpZGRlblByb3BlcnRpZXM6IGZhbHNlLAotICAgIHNob3dEb2NrVG9S
aWdodDogZmFsc2UKKyAgICBzaG93RG9ja1RvUmlnaHQ6IGZhbHNlLAorICAgIHVzZVNwZWN0cnVt
OiB0cnVlCiB9CiAKIHZhciBDYXBhYmlsaXRpZXMgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NwZWN0cnVtLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TcGVjdHJ1bS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iMWFhMmVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TcGVjdHJ1bS5qcwpAQCAtMCwwICsxLDM2OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBCcmlhbiBHcmluc3RlYWQgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworIAorV2ViSW5z
cGVjdG9yLlNwZWN0cnVtID0gZnVuY3Rpb24oY29udGFpbmVyKQoreworICAgIHRoaXMuX3BvcG92
ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlBvcG92ZXIobnVsbCwgdHJ1ZSk7CisgICAgdGhpcy5fcG9w
b3Zlci5wYXJlbnRFbGVtZW50ID0gY29udGFpbmVyOworICAgIHRoaXMuX3BvcG92ZXIuZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCBzdG9wUHJvcGFnYXRpb24sIGZhbHNlKTsK
KyAgICAKKyAgICB0aGlzLl9jb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5jbGFzc05hbWUgPSAic3BlY3Ry
dW0tY29udGFpbmVyIjsKKyAgICAKKyAgICB2YXIgdG9wRWxlbWVudCA9IHRoaXMuX2NvbnRhaW5l
ckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJzcGVjdHJ1bS10b3AiKTsKKyAgICB0b3BFbGVt
ZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0tZmlsbCIpOworCisgICAgdmFyIHRvcElu
bmVyRWxlbWVudCA9IHRvcEVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJzcGVjdHJ1bS10b3At
aW5uZXIiKTsKKyAgICB0aGlzLl9kcmFnZ2VyRWxlbWVudCA9IHRvcElubmVyRWxlbWVudC5jcmVh
dGVDaGlsZCgiZGl2IiwgInNwZWN0cnVtLWNvbG9yIik7CisgICAgdGhpcy5fZHJhZ0hlbHBlckVs
ZW1lbnQgPSB0aGlzLl9kcmFnZ2VyRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVt
LXNhdCIpLmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0tdmFsIikuY3JlYXRlQ2hpbGQoImRp
diIsICJzcGVjdHJ1bS1kcmFnZ2VyIik7CisgICAgCisgICAgdGhpcy5fc2xpZGVyRWxlbWVudCA9
IHRvcElubmVyRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVtLWh1ZSIpOworICAg
IHRoaXMuc2xpZGVIZWxwZXIgPSB0aGlzLl9zbGlkZXJFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYi
LCAic3BlY3RydW0tc2xpZGVyIik7CisgICAgCisgICAgdmFyIHJhbmdlQ29udGFpbmVyID0gdGhp
cy5fY29udGFpbmVyRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVtLXJhbmdlLWNv
bnRhaW5lciIpOworICAgIHZhciBhbHBoYUxhYmVsID0gcmFuZ2VDb250YWluZXIuY3JlYXRlQ2hp
bGQoImxhYmVsIik7CisgICAgYWxwaGFMYWJlbC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiYWxwaGE6ICIpOworICAgIAorICAgIHRoaXMuX2FscGhhRWxlbWVudCA9IHJhbmdl
Q29udGFpbmVyLmNyZWF0ZUNoaWxkKCJpbnB1dCIsICJzcGVjdHJ1bS1yYW5nZSIpOworICAgIHRo
aXMuX2FscGhhRWxlbWVudC5zZXRBdHRyaWJ1dGUoInR5cGUiLCAicmFuZ2UiKTsKKyAgICB0aGlz
Ll9hbHBoYUVsZW1lbnQuc2V0QXR0cmlidXRlKCJtaW4iLCAiMCIpOworICAgIHRoaXMuX2FscGhh
RWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1heCIsICIxMDAiKTsKKyAgICB0aGlzLl9hbHBoYUVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgYWxwaGFEcmFnLmJpbmQodGhpcyksIGZhbHNl
KTsKKyAgICAKKyAgICB2YXIgc3dhdGNoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InNwYW4iKTsKKyAgICBzd2F0Y2hFbGVtZW50LmNsYXNzTmFtZSA9ICJzd2F0Y2giOworICAgIHRo
aXMuX3N3YXRjaElubmVyRWxlbWVudCA9IHN3YXRjaEVsZW1lbnQuY3JlYXRlQ2hpbGQoInNwYW4i
LCAic3dhdGNoLWlubmVyIik7CisgICAgCisgICAgdmFyIGRpc3BsYXlDb250YWluZXIgPSByYW5n
ZUNvbnRhaW5lci5jcmVhdGVDaGlsZCgiZGl2Iik7CisgICAgCisgICAgdmFyIGNvbG9yTGFiZWwg
PSBkaXNwbGF5Q29udGFpbmVyLmNyZWF0ZUNoaWxkKCJsYWJlbCIpOworICAgIGNvbG9yTGFiZWwu
dGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoImNvbG9yOiAiKTsKKyAgICAKKyAg
ICBkaXNwbGF5Q29udGFpbmVyLmFwcGVuZENoaWxkKHN3YXRjaEVsZW1lbnQpOworICAgIAorICAg
IHRoaXMuX2Rpc3BsYXlFbGVtZW50ID0gZGlzcGxheUNvbnRhaW5lci5jcmVhdGVDaGlsZCgic3Bh
biIpOworICAgIAorICAgIFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUodGhpcy5fc2xp
ZGVyRWxlbWVudCwgaHVlRHJhZy5iaW5kKHRoaXMpKTsKKyAgICBXZWJJbnNwZWN0b3IuU3BlY3Ry
dW0uZHJhZ2dhYmxlKHRoaXMuX2RyYWdnZXJFbGVtZW50LCBjb2xvckRyYWcuYmluZCh0aGlzKSk7
CisgICAgCisgICAgZnVuY3Rpb24gaHVlRHJhZyhlbGVtZW50LCBkcmFnWCwgZHJhZ1kpIAorICAg
IHsKKyAgICAgICAgdGhpcy5oc3ZbMF0gPSAoZHJhZ1kgLyB0aGlzLnNsaWRlSGVpZ2h0KTsKKyAg
ICAgICAgCisgICAgICAgIHRoaXMuX29uY2hhbmdlKCk7ICAKKyAgICB9CisgICAgCisgICAgZnVu
Y3Rpb24gY29sb3JEcmFnKGVsZW1lbnQsIGRyYWdYLCBkcmFnWSkgCisgICAgeworICAgICAgICB0
aGlzLmhzdlsxXSA9IGRyYWdYIC8gdGhpcy5kcmFnV2lkdGg7CisgICAgICAgIHRoaXMuaHN2WzJd
ID0gKHRoaXMuZHJhZ0hlaWdodCAtIGRyYWdZKSAvIHRoaXMuZHJhZ0hlaWdodDsKKyAgICAgICAg
CisgICAgICAgIHRoaXMuX29uY2hhbmdlKCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGFs
cGhhRHJhZygpIAorICAgIHsKKyAgICAgICAgdGhpcy5oc3ZbM10gPSB0aGlzLl9hbHBoYUVsZW1l
bnQudmFsdWUgLyAxMDA7CisgICAgICAgIAorICAgICAgICB0aGlzLl9vbmNoYW5nZSgpOworICAg
IH0KKyAgICAKKyAgICB0aGlzLl9oaWRlUHJveHkgPSB0aGlzLmhpZGUuYmluZCh0aGlzKTsKK30K
KworV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmhzdlRvUkdCID0gZnVuY3Rpb24oaCwgcywgdiwgYSkg
Cit7CisgICAgdmFyIHIsIGcsIGI7CisgICAgCisgICAgdmFyIGkgPSBNYXRoLmZsb29yKGggKiA2
KTsKKyAgICB2YXIgZiA9IGggKiA2IC0gaTsKKyAgICB2YXIgcCA9IHYgKiAoMSAtIHMpOworICAg
IHZhciBxID0gdiAqICgxIC0gZiAqIHMpOworICAgIHZhciB0ID0gdiAqICgxIC0gKDEgLSBmKSAq
IHMpOworICAgIAorICAgIHN3aXRjaChpICUgNikgeworICAgIGNhc2UgMDogCisgICAgICAgIHIg
PSB2LCBnID0gdCwgYiA9IHA7IAorICAgICAgICBicmVhazsKKyAgICBjYXNlIDE6IAorICAgICAg
ICByID0gcSwgZyA9IHYsIGIgPSBwOyAKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOiAKKyAg
ICAgICAgciA9IHAsIGcgPSB2LCBiID0gdDsgCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMzog
CisgICAgICAgIHIgPSBwLCBnID0gcSwgYiA9IHY7IAorICAgICAgICBicmVhazsKKyAgICBjYXNl
IDQ6IAorICAgICAgICByID0gdCwgZyA9IHAsIGIgPSB2OyAKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSA1OiAKKyAgICAgICAgciA9IHYsIGcgPSBwLCBiID0gcTsgCisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gW3IgKiAyNTUsIGcgKiAyNTUsIGIgKiAyNTUsIGFdOwor
fTsKKworV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnJnYlRvSFNWID0gZnVuY3Rpb24ociwgZywgYiwg
YSkgCit7CisgICAgciA9IHIgLyAyNTU7CisgICAgZyA9IGcgLyAyNTU7CisgICAgYiA9IGIgLyAy
NTU7CisgICAgCisgICAgdmFyIG1heCA9IE1hdGgubWF4KHIsIGcsIGIpLCBtaW4gPSBNYXRoLm1p
bihyLCBnLCBiKTsKKyAgICB2YXIgaCwgcywgdiA9IG1heDsKKworICAgIHZhciBkID0gbWF4IC0g
bWluOworICAgIHMgPSBtYXggPyBkIC8gbWF4IDogMDsKKworICAgIGlmKG1heCA9PT0gbWluKSB7
CisgICAgICAgIC8vIEFjaHJvbWF0aWMuCisgICAgICAgIGggPSAwOyAKKyAgICB9IGVsc2Ugewor
ICAgICAgICBzd2l0Y2gobWF4KSB7CisgICAgICAgIGNhc2UgcjogCisgICAgICAgICAgICBoID0g
KGcgLSBiKSAvIGQgKyAoZyA8IGIgPyA2IDogMCk7IAorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgZzogCisgICAgICAgICAgICBoID0gKGIgLSByKSAvIGQgKyAyOyAKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIGI6IAorICAgICAgICAgICAgaCA9IChyIC0gZykgLyBk
ICsgNDsgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBoIC89IDY7Cisg
ICAgfQorICAgIHJldHVybiBbaCwgcywgdiwgYV07Cit9OworCitXZWJJbnNwZWN0b3IuU3BlY3Ry
dW0uZHJhZ2dhYmxlID0gZnVuY3Rpb24oZWxlbWVudCwgb25tb3ZlLCBvbnN0YXJ0LCBvbnN0b3Ap
IHsKKworICAgIHZhciBkb2MgPSBkb2N1bWVudDsKKyAgICB2YXIgZHJhZ2dpbmc7CisgICAgdmFy
IG9mZnNldDsKKyAgICB2YXIgc2Nyb2xsT2Zmc2V0OworICAgIHZhciBtYXhIZWlnaHQ7CisgICAg
dmFyIG1heFdpZHRoOworCisgICAgZnVuY3Rpb24gcHJldmVudChlKSAKKyAgICB7CisgICAgICAg
IGlmIChlLnN0b3BQcm9wYWdhdGlvbikKKyAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7
CisgICAgICAgIAorICAgICAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCkKKyAgICAgICAgICAgIGUu
cHJldmVudERlZmF1bHQoKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gbW92ZShlKSAKKyAg
ICB7CisgICAgICAgIGlmIChkcmFnZ2luZykgeworICAgICAgICAgICAgdmFyIGRyYWdYID0gTWF0
aC5tYXgoMCwgTWF0aC5taW4oZS5wYWdlWCAtIG9mZnNldC5sZWZ0ICsgc2Nyb2xsT2Zmc2V0Lmxl
ZnQsIG1heFdpZHRoKSk7CisgICAgICAgICAgICB2YXIgZHJhZ1kgPSBNYXRoLm1heCgwLCBNYXRo
Lm1pbihlLnBhZ2VZIC0gb2Zmc2V0LnRvcCArIHNjcm9sbE9mZnNldC50b3AsIG1heEhlaWdodCkp
OworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAob25tb3ZlKQorICAgICAgICAgICAgICAg
IG9ubW92ZShlbGVtZW50LCBkcmFnWCwgZHJhZ1kpOyAKKyAgICAgICAgfSAKKyAgICB9CisgICAg
CisgICAgZnVuY3Rpb24gc3RhcnQoZSkgCisgICAgeyAKKyAgICAgICAgdmFyIHJpZ2h0Q2xpY2sg
PSBlLndoaWNoID8gKGUud2hpY2ggPT09IDMpIDogKGUuYnV0dG9uID09PSAyKTsKKyAgICAgICAg
CisgICAgICAgIGlmICghcmlnaHRDbGljayAmJiAhZHJhZ2dpbmcpIHsgCisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGlmIChvbnN0YXJ0KQorICAgICAgICAgICAgICAgIG9uc3RhcnQoZWxlbWVu
dCwgZSkKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZHJhZ2dpbmcgPSB0cnVlOyAKKyAgICAg
ICAgICAgIG1heEhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgbWF4
V2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoOworICAgICAgICAgICAgCisgICAgICAgICAgICBz
Y3JvbGxPZmZzZXQgPSBlbGVtZW50LnNjcm9sbE9mZnNldCgpOworICAgICAgICAgICAgb2Zmc2V0
ID0gZWxlbWVudC50b3RhbE9mZnNldCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdHN0YXJ0IiwgcHJldmVudCwg
ZmFsc2UpOworICAgICAgICAgICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdzdGFydCIsIHBy
ZXZlbnQsIGZhbHNlKTsKKyAgICAgICAgICAgIGRvYy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1v
dmUiLCBtb3ZlLCBmYWxzZSk7CisgICAgICAgICAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2V1cCIsIHN0b3AsIGZhbHNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHJldmVudChl
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBzdG9wKGUpIAorICAgIHsg
CisgICAgICAgIGlmIChkcmFnZ2luZykgeyAKKyAgICAgICAgICAgIGRvYy5yZW1vdmVFdmVudExp
c3RlbmVyKCJzZWxlY3RzdGFydCIsIHByZXZlbnQsIGZhbHNlKTsKKyAgICAgICAgICAgIGRvYy5y
ZW1vdmVFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCBwcmV2ZW50LCBmYWxzZSk7CisgICAgICAg
ICAgICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgbW92ZSwgZmFsc2UpOwor
ICAgICAgICAgICAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBzdG9wLCBmYWxz
ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChvbnN0b3ApCisgICAgICAgICAgICAg
ICAgb25zdG9wKGVsZW1lbnQsIGUpOyAKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZHJh
Z2dpbmcgPSBmYWxzZTsgCisgICAgfQorICAgIAorICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigibW91c2Vkb3duIiwgc3RhcnQsIGZhbHNlKTsKK307CisKK1dlYkluc3BlY3Rvci5TcGVjdHJ1
bS5wcm90b3R5cGUgPSB7CisgICAgc2V0IGNvbG9yKGNvbG9yKQorICAgIHsKKyAgICAgICAgdmFy
IHJnYmEgPSAoY29sb3IucmdiYSB8fCBjb2xvci5yZ2IpLnNsaWNlKDApOworICAgICAgICAKKyAg
ICAgICAgaWYgKHJnYmEubGVuZ3RoID09PSAzKQorICAgICAgICAgICAgcmdiYVszXSA9IDE7Cisg
ICAgICAgICAgICAKKyAgICAgICAgdGhpcy5oc3YgPSBXZWJJbnNwZWN0b3IuU3BlY3RydW0ucmdi
VG9IU1YocmdiYVswXSwgcmdiYVsxXSwgcmdiYVsyXSwgcmdiYVszXSk7CisgICAgfSwKKworICAg
IGdldCBjb2xvcigpCisgICAgeworICAgICAgICB2YXIgcmdiID0gV2ViSW5zcGVjdG9yLlNwZWN0
cnVtLmhzdlRvUkdCKHRoaXMuaHN2WzBdLCB0aGlzLmhzdlsxXSwgdGhpcy5oc3ZbMl0sIHRoaXMu
aHN2WzNdKTsKKyAgICAgICAgdmFyIHJvdW5kID0gW01hdGgucm91bmQocmdiWzBdKSwgTWF0aC5y
b3VuZChyZ2JbMV0pLCBNYXRoLnJvdW5kKHJnYlsyXSksIHJnYlszXV07CisgICAgICAgIAorICAg
ICAgICBpZiAocmdiWzNdID09PSAxKQorICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5D
b2xvci5mcm9tUkdCKHJvdW5kWzBdLCByb3VuZFsxXSwgcm91bmRbMl0sIHJvdW5kWzNdKTsKKyAg
ICAgICAgICAgIAorICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKHJv
dW5kWzBdLCByb3VuZFsxXSwgcm91bmRbMl0sIHJvdW5kWzNdKTsKKyAgICB9LAorICAgIAorICAg
IGdldCBjb2xvckh1ZU9ubHkoKQorICAgIHsKKyAgICAgICAgdmFyIHJnYiA9IFdlYkluc3BlY3Rv
ci5TcGVjdHJ1bS5oc3ZUb1JHQih0aGlzLmhzdlswXSwgMSwgMSk7CisgICAgICAgIHZhciByb3Vu
ZCA9IFtNYXRoLnJvdW5kKHJnYlswXSksIE1hdGgucm91bmQocmdiWzFdKSwgTWF0aC5yb3VuZChy
Z2JbMl0pLCByZ2JbM11dOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5D
b2xvci5mcm9tUkdCQShyb3VuZFswXSwgcm91bmRbMV0sIHJvdW5kWzJdLCByb3VuZFszXSk7Cisg
ICAgfSwKKyAgICAKKyAgICBzZXQgZGlzcGxheVRleHQodGV4dCkgCisgICAgeworICAgICAgICB0
aGlzLl9kaXNwbGF5RWxlbWVudC50ZXh0Q29udGVudCA9IHRleHQ7CisgICAgfSwKKyAgICAKKyAg
ICBfb25jaGFuZ2U6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLl91cGRhdGVVSSgpOworICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygiY2hhbmdlIiwgdGhpcy5jb2xvcik7
CisgICAgfSwKKyAgICAKKworICAgIF91cGRhdGVIZWxwZXJMb2NhdGlvbnM6IGZ1bmN0aW9uKCkg
CisgICAgeworICAgICAgICB2YXIgaCA9IHRoaXMuaHN2WzBdOworICAgICAgICB2YXIgcyA9IHRo
aXMuaHN2WzFdOworICAgICAgICB2YXIgdiA9IHRoaXMuaHN2WzJdOworICAgICAgICAKKyAgICAg
ICAgLy8gV2hlcmUgdG8gc2hvdyB0aGUgbGl0dGxlIGNpcmNsZSBpbiB0aGF0IGRpc3BsYXlzIHlv
dXIgY3VycmVudCBzZWxlY3RlZCBjb2xvci4KKyAgICAgICAgdmFyIGRyYWdYID0gcyAqIHRoaXMu
ZHJhZ1dpZHRoOworICAgICAgICB2YXIgZHJhZ1kgPSB0aGlzLmRyYWdIZWlnaHQgLSAodiAqIHRo
aXMuZHJhZ0hlaWdodCk7CisgICAgICAgIAorICAgICAgICBkcmFnWCA9IE1hdGgubWF4KC10aGlz
Ll9kcmFnSGVscGVyRWxlbWVudEhlaWdodCwgCisgICAgICAgICAgICAgICAgICAgICAgICBNYXRo
Lm1pbih0aGlzLmRyYWdXaWR0aCAtIHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50SGVpZ2h0LCBkcmFn
WCAtIHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50SGVpZ2h0KSk7CisgICAgICAgIGRyYWdZID0gTWF0
aC5tYXgoLXRoaXMuX2RyYWdIZWxwZXJFbGVtZW50SGVpZ2h0LCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIE1hdGgubWluKHRoaXMuZHJhZ0hlaWdodCAtIHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50
SGVpZ2h0LCBkcmFnWSAtIHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50SGVpZ2h0KSk7CisgICAgICAg
IAorICAgICAgICB0aGlzLl9kcmFnSGVscGVyRWxlbWVudC5wb3NpdGlvbkF0KGRyYWdYLCBkcmFn
WSk7CisgICAgICAgIAorICAgICAgICAvLyBXaGVyZSB0byBzaG93IHRoZSBiYXIgdGhhdCBkaXNw
bGF5cyB5b3VyIGN1cnJlbnQgc2VsZWN0ZWQgaHVlLgorICAgICAgICB2YXIgc2xpZGVZID0gKGgg
KiB0aGlzLnNsaWRlSGVpZ2h0KSAtIHRoaXMuc2xpZGVIZWxwZXJIZWlnaHQ7CisgICAgICAgIHRo
aXMuc2xpZGVIZWxwZXIuc3R5bGUudG9wID0gc2xpZGVZICsgInB4IjsKKyAgICAgICAgCisgICAg
ICAgIHRoaXMuX2FscGhhRWxlbWVudC52YWx1ZSA9IHRoaXMuaHN2WzNdICogMTAwOworICAgIH0s
CisgICAgCisgICAgX3VwZGF0ZVVJOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl91
cGRhdGVIZWxwZXJMb2NhdGlvbnMoKTsKKyAgICAgICAgCisgICAgICAgIHZhciByZ2IgPSAodGhp
cy5jb2xvci5yZ2JhIHx8IHRoaXMuY29sb3IucmdiKS5zbGljZSgwKTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChyZ2IubGVuZ3RoID09PSAzKQorICAgICAgICAgICAgcmdiWzNdID0gMTsKKyAgICAg
ICAgICAgIAorICAgICAgICB2YXIgcmdiSHVlT25seSA9IHRoaXMuY29sb3JIdWVPbmx5LnJnYjsK
KyAgICAgICAgCisgICAgICAgIHZhciBmbGF0Q29sb3IgPSAicmdiKCIgKyByZ2JIdWVPbmx5WzBd
ICsgIiwgIiArIHJnYkh1ZU9ubHlbMV0gKyAiLCAiICsgcmdiSHVlT25seVsyXSArICIpIjsKKyAg
ICAgICAgdmFyIGZ1bGxDb2xvciA9ICJyZ2JhKCIgKyByZ2JbMF0gKyAiLCAiICsgcmdiWzFdICsg
IiwgIiArIHJnYlsyXSArICIsICIgKyByZ2JbM10gKyAiKSI7CisgICAgICAgIAorICAgICAgICB0
aGlzLl9kcmFnZ2VyRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBmbGF0Q29sb3I7Cisg
ICAgICAgIHRoaXMuX3N3YXRjaElubmVyRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBm
dWxsQ29sb3I7CisgICAgICAgIAorICAgICAgICB0aGlzLl9hbHBoYUVsZW1lbnQudmFsdWUgPSB0
aGlzLmhzdlszXSAqIDEwMDsKKyAgICB9LAorICAgIAorICAgIHRvZ2dsZTogZnVuY3Rpb24oZWxl
bWVudCwgY29sb3IpCisgICAgeworICAgICAgICBpZiAodGhpcy5faXNTaG93bikgCisgICAgICAg
ICAgICB0aGlzLmhpZGUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5zaG93KGVs
ZW1lbnQsIGNvbG9yKTsKKyAgICAgICAgICAgIAorICAgICAgICByZXR1cm4gdGhpcy5faXNTaG93
bjsKKyAgICB9LAorICAgIAorICAgIHNob3c6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbG9yKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuX2lzU2hvd24pCisgICAgICAgICAgICB0aGlzLmhpZGUoKTsK
KyAgICAgICAgICAgICAKKyAgICAgICAgdGhpcy5faXNTaG93biA9IHRydWU7CisgICAgICAgIHRo
aXMuX3BvcG92ZXIuc2hvdyh0aGlzLl9jb250YWluZXJFbGVtZW50LCBlbGVtZW50KTsKKyAgICAg
ICAgCisgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMu
X2hpZGVQcm94eSk7CisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhp
cy5faGlkZVByb3h5KTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuc2xpZGVIZWlnaHQgPSB0aGlz
Ll9zbGlkZXJFbGVtZW50Lm9mZnNldEhlaWdodDsKKyAgICAgICAgdGhpcy5kcmFnV2lkdGggPSB0
aGlzLl9kcmFnZ2VyRWxlbWVudC5vZmZzZXRXaWR0aDsKKyAgICAgICAgdGhpcy5kcmFnSGVpZ2h0
ID0gdGhpcy5fZHJhZ2dlckVsZW1lbnQub2Zmc2V0SGVpZ2h0OworICAgICAgICB0aGlzLl9kcmFn
SGVscGVyRWxlbWVudEhlaWdodCA9IHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50Lm9mZnNldEhlaWdo
dCAvIDI7CisgICAgICAgIHRoaXMuc2xpZGVIZWxwZXJIZWlnaHQgPSB0aGlzLnNsaWRlSGVscGVy
Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgIAorICAgICAgICB0aGlzLmNvbG9yID0gY29sb3I7
CisgICAgICAgIHRoaXMuX3VwZGF0ZVVJKCk7CisgICAgfSwKKyAgICAKKyAgICBoaWRlOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICBkZWxldGUgdGhpcy5faXNTaG93bjsKKyAgICAgICAgdGhp
cy5fcG9wb3Zlci5oaWRlKCk7CisgICAgICAgIAorICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVu
dExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9oaWRlUHJveHkpOworICAgICAgICB3aW5kb3cu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2hpZGVQcm94eSk7CisgICAgICAgIAor
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygiaGlkZSIsIHRoaXMuY29sb3Ip
OworICAgICAgICAKKyAgICAgICAgLy8gT25seSB3YW50IHRvIGFsbG93IG9uZSBpbnN0YW5jZSB0
byBiZSBvcGVuIGF0IGEgdGltZSwgc28gY2xlYXIgb3V0IGFueSAKKyAgICAgICAgLy8gZXhpc3Rp
bmcgZXZlbnQgbGlzdGVuZXJzLgorICAgICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygpOwor
ICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwppbmRleCAzZjk1NWMx
Li43ODcyODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKQEAgLTg5LDggKzg5LDEyIEBAIFdlYkluc3BlY3Rv
ci5TdHlsZXNTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKGNvbXB1dGVkU3R5bGVQYW5lKQogICAgIHRo
aXMuX3NlY3Rpb25zQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAg
ICAgdGhpcy5ib2R5RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWN0aW9uc0NvbnRhaW5lcik7
CiAKKyAgICBpZiAoUHJlZmVyZW5jZXMudXNlU3BlY3RydW0pCisgICAgICAgIHRoaXMuX3NwZWN0
cnVtID0gbmV3IFdlYkluc3BlY3Rvci5TcGVjdHJ1bSh0aGlzLmJvZHlFbGVtZW50KTsKKyAgICAK
ICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVNb2RlbC5FdmVudHMuU3R5bGVTaGVldENoYW5nZWQsIHRoaXMuX3N0eWxlU2hlZXRP
ck1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuY3NzTW9k
ZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTWVk
aWFRdWVyeVJlc3VsdENoYW5nZWQsIHRoaXMuX3N0eWxlU2hlZXRPck1lZGlhUXVlcnlSZXN1bHRD
aGFuZ2VkLCB0aGlzKTsKKyAgICAKICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkF0dHJNb2RpZmllZCwgdGhpcy5f
YXR0cmlidXRlc01vZGlmaWVkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkF0dHJSZW1vdmVkLCB0
aGlzLl9hdHRyaWJ1dGVzUmVtb3ZlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5TdHlsZUludmFs
aWRhdGVkLCB0aGlzLl9zdHlsZUludmFsaWRhdGVkLCB0aGlzKTsKQEAgLTE2MDAsMjkgKzE2MDQs
ODIgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7CiAgICAgICAgICAgICAgICAgfQotCisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdmFyIGhhc0NvbG9ycGlja2VyID0gc2Vs
Zi5fcGFyZW50UGFuZTsKKyAgICAgICAgICAgICAgICB2YXIgc3BlY3RydW0gPSBoYXNDb2xvcnBp
Y2tlciAmJiBzZWxmLl9wYXJlbnRQYW5lLl9zcGVjdHJ1bTsKKyAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICB2YXIgc3dhdGNoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InNwYW4iKTsKLSAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LnRpdGxlID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDbGljayB0byBjaGFuZ2UgY29sb3IgZm9ybWF0Iik7CisgICAgICAgICAg
ICAgICAgdmFyIHN3YXRjaElubmVyRWxlbWVudCA9IHN3YXRjaEVsZW1lbnQuY3JlYXRlQ2hpbGQo
InNwYW4iLCAic3dhdGNoLWlubmVyIik7CisgICAgICAgICAgICAgICAgaWYgKGhhc0NvbG9ycGlj
a2VyKQorICAgICAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LnRpdGxlID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDbGljayB0byBvcGVuIGEgY29sb3JwaWNrZXIiKTsKKyAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5jbGFzc05hbWUgPSAic3dh
dGNoIjsKLSAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCJi
YWNrZ3JvdW5kLWNvbG9yIiwgdGV4dCk7Ci0KLSAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgY2hhbmdlQ29sb3JEaXNwbGF5LCBmYWxzZSk7Ci0g
ICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIs
IGZ1bmN0aW9uKGV2ZW50KSB7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpIH0sIGZhbHNlKTsKLQot
ICAgICAgICAgICAgICAgIHZhciBmb3JtYXQ7Ci0gICAgICAgICAgICAgICAgdmFyIGZvcm1hdFNl
dHRpbmcgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY29sb3JGb3JtYXQuZ2V0KCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKGZvcm1hdFNldHRpbmcgPT09IGNmLk9yaWdpbmFsKQotICAgICAgICAgICAg
ICAgICAgICBmb3JtYXQgPSBjZi5PcmlnaW5hbDsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChj
b2xvci5uaWNrbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuTmlja25hbWU7
Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0U2V0dGluZyA9PT0gY2YuUkdCKQotICAg
ICAgICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3Iuc2ltcGxlID8gY2YuUkdCIDogY2YuUkdC
QSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0U2V0dGluZyA9PT0gY2YuSFNMKQot
ICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3Iuc2ltcGxlID8gY2YuSFNMIDogY2Yu
SFNMQSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoY29sb3Iuc2ltcGxlKQotICAgICAgICAg
ICAgICAgICAgICBmb3JtYXQgPSAoY29sb3IuaGFzU2hvcnRIZXgoKSA/IGNmLlNob3J0SEVYIDog
Y2YuSEVYKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZvcm1h
dCA9IGNmLlJHQkE7CisKKyAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlZG93biIsIHN0b3BQcm9wYWdhdGlvbiwgZmFsc2UpOworICAgICAgICAgICAg
ICAgIHN3YXRjaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBzd2F0Y2hDbGljaywg
ZmFsc2UpOworICAgICAgICAgICAgICAgIHN3YXRjaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
ZGJsY2xpY2siLCBzdG9wUHJvcGFnYXRpb24sIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBzd2F0Y2hJbm5lckVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0g
dGV4dDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBzcGVjdHJ1
bUNoYW5nZShlKSAKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbG9y
ID0gZS5kYXRhOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgdmFy
IGNvbG9yU3RyaW5nID0gY29sb3IudG9TdHJpbmcoZ2V0Rm9ybWF0KCkpOworICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgY29sb3JWYWx1ZUVsZW1lbnQudGV4dENvbnRl
bnQgPSBjb2xvclN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgc3BlY3RydW0uZGlzcGxheVRl
eHQgPSBjb2xvclN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgc3dhdGNoSW5uZXJFbGVtZW50
LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGNvbG9yU3RyaW5nOworICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseVN0eWxlVGV4dChuYW1lRWxlbWVudC50
ZXh0Q29udGVudCArICI6ICIgKyB2YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbiBzcGVjdHJ1bUhpZGUoKSAKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuYXBwbHlTdHlsZVRleHQobmFtZUVsZW1lbnQudGV4dENvbnRl
bnQgKyAiOiAiICsgdmFsdWVFbGVtZW50LnRleHRDb250ZW50LCB0cnVlLCB0cnVlLCBmYWxzZSk7
CisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzZWxmLl9wYXJlbnRQYW5lLl9pc0VkaXRpbmdT
dHlsZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gc3dhdGNoQ2xpY2soZSkgCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAvLyBBbHQgKyBjbGljayB0b2dnbGVzIGNvbG9yIGZvcm1hdHMuCisgICAgICAg
ICAgICAgICAgICAgIC8vIENsaWNrIG9wZW5zIGNvbG9ycGlja2VyLCBvbmx5IGlmIHRoZSBlbGVt
ZW50IGlzIG5vdCBpbiBjb21wdXRlZCBzdHlsZXMgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgIGlmICghc3BlY3RydW0gfHwgZS5hbHRLZXkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VDb2xvckRpc3BsYXkoZSk7CisgICAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGhhc0NvbG9ycGlja2VyKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgaXNTaG93biA9IHNwZWN0cnVtLnRvZ2dsZShzd2F0Y2hFbGVtZW50LCBjb2xvcik7Cisg
ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2hv
d24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3RydW0uZGlzcGxheVRleHQg
PSBjb2xvci50b1N0cmluZyhnZXRGb3JtYXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX3BhcmVudFBhbmUuX2lzRWRpdGluZ1N0eWxlID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3BlY3RydW0uYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgc3Bl
Y3RydW1DaGFuZ2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdHJ1bS5hZGRF
dmVudExpc3RlbmVyKCJoaWRlIiwgc3BlY3RydW1IaWRlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICB2YXIgZm9ybWF0ID0gZ2V0Rm9ybWF0KCk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gZ2V0Rm9ybWF0KCkgCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybWF0OworICAgICAgICAg
ICAgICAgICAgICB2YXIgZm9ybWF0U2V0dGluZyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb2xv
ckZvcm1hdC5nZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdFNldHRpbmcgPT09
IGNmLk9yaWdpbmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuT3JpZ2lu
YWw7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbG9yLm5pY2tuYW1lKQorICAgICAg
ICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuTmlja25hbWU7CisgICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGZvcm1hdFNldHRpbmcgPT09IGNmLlJHQikKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZvcm1hdCA9IChjb2xvci5zaW1wbGUgPyBjZi5SR0IgOiBjZi5SR0JBKTsKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0U2V0dGluZyA9PT0gY2YuSFNMKQorICAgICAg
ICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gKGNvbG9yLnNpbXBsZSA/IGNmLkhTTCA6IGNmLkhT
TEEpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjb2xvci5zaW1wbGUpCisgICAgICAg
ICAgICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3IuaGFzU2hvcnRIZXgoKSA/IGNmLlNob3J0
SEVYIDogY2YuSEVYKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgZm9ybWF0ID0gY2YuUkdCQTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgICAgIHZhciBjb2xvclZhbHVlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNwYW4iKTsKICAgICAgICAgICAgICAgICBjb2xvclZhbHVlRWxlbWVudC50ZXh0Q29udGVu
dCA9IGNvbG9yLnRvU3RyaW5nKGZvcm1hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggNjY0MjVjNy4uOWQ4NWQwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtMTMxLDYgKzEzMSw3
IEBACiAgICAgPGZpbGU+U291cmNlSFRNTFRva2VuaXplci5qczwvZmlsZT4KICAgICA8ZmlsZT5T
b3VyY2VKYXZhU2NyaXB0VG9rZW5pemVyLmpzPC9maWxlPgogICAgIDxmaWxlPlNvdXJjZVRva2Vu
aXplci5qczwvZmlsZT4KKyAgICA8ZmlsZT5TcGVjdHJ1bS5qczwvZmlsZT4KICAgICA8ZmlsZT5T
cGxpdFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+U3RhdHVzQmFyQnV0dG9uLmpzPC9maWxlPgog
ICAgIDxmaWxlPlN0eWxlc1NpZGViYXJQYW5lLmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IGUwNWYwNjUuLmEwMjIy
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5jc3MKQEAgLTE0NDUsNiArMTQ0NSwxMyBAQCBsaS5lZGl0aW5nIC5zd2F0Y2gsIGxpLmVkaXRp
bmcgLmVuYWJsZWQtYnV0dG9uLCAgbGkuZWRpdGluZy1zdWItcGFydCAuZGVsZXRlLWJ1dAogICAg
IHdpZHRoOiAxZW07CiAgICAgaGVpZ2h0OiAxZW07CiAgICAgYm9yZGVyOiAxcHggc29saWQgcmdi
YSgxMjgsIDEyOCwgMTI4LCAwLjYpOworICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChJbWFnZXMv
Y2hlY2tlci5wbmcpOworfQorCisuc3dhdGNoLWlubmVyIHsgCisgICAgd2lkdGg6IDEwMCU7Cisg
ICAgaGVpZ2h0OiAxMDAlOworICAgIGRpc3BsYXk6IGJsb2NrOwogfQogCiAuc3dhdGNoOmhvdmVy
IHsKQEAgLTI2MzksMyArMjY0NiwxMDggQEAgYm9keS5wbGF0Zm9ybS1tYWMgI2RyYXdlci1zdGF0
dXMtYmFyIC5zZWFyY2gtc3RhdHVzLWJhci1wcm9ncmVzcyB7CiAgICAgYm9yZGVyLWNvbG9yOiB0
cmFuc3BhcmVudDsKICAgICBib3JkZXItd2lkdGg6IDAgMCAxMXB4IDA7CiB9CisKKy8qIGh0dHBz
Oi8vZ2l0aHViLmNvbS9iZ3JpbnMvc3BlY3RydW0gKi8KKy5zcGVjdHJ1bS1jb250YWluZXIgeyAK
KyAgICBwb3NpdGlvbjogYWJzb2x1dGU7IAorICAgIHRvcDogMDsgCisgICAgbGVmdDogMDsgCisg
ICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIGJhY2tncm91bmQ6IHJnYmEoMjMwLCAyMzAs
IDIzMCwgMSkgIWltcG9ydGFudDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCAjNjQ2NDY0OworICAg
IHBhZGRpbmc6IDEwcHg7CisgICAgd2lkdGg6IDIwMHB4OworICAgIHotaW5kZXg6IDEwOworfQor
Cisuc3BlY3RydW0tdG9wIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7IAorICAgIHdpZHRoOiAx
MDAlOworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKK30KKworLnNwZWN0cnVtLWNvbG9yIHsg
CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAg
IGJvdHRvbTogMDsKKyAgICByaWdodDogMjAlOworfQorCisuc3BlY3RydW0taHVlIHsKKyAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOworICAgIHJpZ2h0OiAwOworICAgIGJvdHRv
bTogMDsKKyAgICBsZWZ0OiA4MyU7Cit9CisKKy5zcGVjdHJ1bS1maWxsIHsgCisgICAgLyogU2Ft
ZSBhcyBzcGVjdHJ1bS1jb2xvciB3aWR0aCB0byBmb3JjZSBhc3BlY3QgcmF0aW8uICovCisgICAg
bWFyZ2luLXRvcDogODAlOyAKK30KKworLnNwZWN0cnVtLXNhdCwgLnNwZWN0cnVtLXZhbCwgLnNw
ZWN0cnVtLXRvcC1pbm5lciB7IAorICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgCisgICAgdG9wOiAw
OyAKKyAgICBsZWZ0OiAwOyAKKyAgICByaWdodDogMDsgCisgICAgYm90dG9tOiAwOyAKK30KKwor
LnNwZWN0cnVtLXJhbmdlLWNvbnRhaW5lciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAg
IHBhZGRpbmctdG9wOiAxMHB4OworfQorCisuc3BlY3RydW0tcmFuZ2UtY29udGFpbmVyICogewor
ICAgIGZvbnQtc2l6ZTogOXB4OworICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cit9CisKKy5z
cGVjdHJ1bS1yYW5nZS1jb250YWluZXIgbGFiZWwgeworICAgIHdpZHRoOiAzMnB4OworICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKK30KKworLnNwZWN0cnVtLXJhbmdlLWNvbnRhaW5lciBpbnB1
dCB7IAorICAgIHdpZHRoOiAxMzBweDsgCit9CisKKy5zd2F0Y2gsIC5zcGVjdHJ1bS1kcmFnZ2Vy
LCAuc3BlY3RydW0tc2xpZGVyIHsgCisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKK30K
KworLnNwZWN0cnVtLXNhdCB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXIt
Z3JhZGllbnQobGVmdCwgd2hpdGUsIHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpOworfQorCisuc3Bl
Y3RydW0tdmFsIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVu
dChib3R0b20sIGJsYWNrLCByZ2JhKDIwNCwgMTU0LCAxMjksIDApKTsKK30KKworLnNwZWN0cnVt
LWh1ZSB7CisgICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZmYw
MDAwIDAlLCAjZmZmZjAwIDE3JSwgIzAwZmYwMCAzMyUsICMwMGZmZmYgNTAlLCAjMDAwMGZmIDY3
JSwgI2ZmMDBmZiA4MyUsICNmZjAwMDAgMTAwJSk7Cit9CisKKy5zcGVjdHJ1bS1kcmFnZ2VyIHsK
KyAgICBib3JkZXItcmFkaXVzOiA1cHg7IAorICAgIGhlaWdodDogNXB4OyAKKyAgICB3aWR0aDog
NXB4OyAKKyAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDNweDsKKyAgICBjdXJzb3I6IHBvaW50ZXI7
CisgICAgcG9zaXRpb246IGFic29sdXRlOyAKKyAgICB0b3A6IDA7IAorICAgIGxlZnQ6IDA7Cit9
CisKKy5zcGVjdHJ1bS1zbGlkZXIgeyAKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7IAorICAgIHRv
cDogMDsgCisgICAgY3Vyc29yOiBwb2ludGVyOworICAgIGhlaWdodDogNXB4OyAKKyAgICB3aWR0
aDogMTEwJTsKKyAgICBtYXJnaW4tbGVmdDogLTUlOworICAgIGJhY2tncm91bmQ6IHdoaXRlOyAK
KyAgICBvcGFjaXR5OiAuODsgCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCA1MGU5MTlhLi44YjU3ZDAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTgy
LDYgKzgyLDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJBcHBsaWNhdGlvbkNhY2hlTW9kZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkFwcGxpY2F0aW9uQ2FjaGVJdGVtc1ZpZXcuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNjcmlwdC5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU3Bl
Y3RydW0uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IlNpZGViYXJQYW5lLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJFbGVtZW50c1RyZWVPdXRsaW5lLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJET01QcmVzZW50YXRpb25VdGlscy5qcyI+
PC9zY3JpcHQ+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125058</attachid>
            <date>2012-02-01 18:17:52 -0800</date>
            <delta_ts>2012-02-09 19:50:33 -0800</delta_ts>
            <desc>Add colorpicker functionality to color swatches in Styles Sidebar - Using native popover and keeping original color format</desc>
            <filename>71262.patch</filename>
            <type>text/plain</type>
            <size>28591</size>
            <attacher name="Brian Grinstead">briangrinstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4MWE5ZDFmLi5jMDFiNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEg
QEAKKzIwMTItMDItMDEgIGJncmlucyAgPGJyaWFuZ3JpbnN0ZWFkQGdtYWlsLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgY29sb3JwaWNrZXIgZnVuY3Rpb25hbGl0eSB0byBjb2xv
ciBzd2F0Y2hlcyBpbiBTdHlsZXMgU2lkZWJhcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEyNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRp
bmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3BlY3RydW0uanM6IEFkZGVk
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmh1ZURyYWcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNwZWN0cnVtLmNvbG9yRHJhZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3Bl
Y3RydW0uYWxwaGFEcmFnKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uaHN2VG9SR0JBKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TcGVjdHJ1bS5yZ2JUb0hTVkEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVt
LmRyYWdnYWJsZS5wcmV2ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFn
Z2FibGUubW92ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxlLnN0
YXJ0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUuc3RvcCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuc2V0IGNvbG9yKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuZ2V0IGNvbG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TcGVjdHJ1bS5wcm90b3R5cGUuZ2V0IG91dHB1dENvbG9yRm9ybWF0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuZ2V0IGNvbG9ySHVlT25seSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLnNldCBkaXNwbGF5VGV4dCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLl9vbmNoYW5nZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLl91cGRhdGVIZWxwZXJMb2NhdGlvbnMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS5fdXBkYXRlVUkpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS50b2dnbGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUucmVwb3NpdGlvbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLmhpZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVz
U2lkZWJhclBhbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxl
bWVudC5wcm90b3R5cGUudXBkYXRlVGl0bGUuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
Y3NzOgorICAgICAgICAoLnN3YXRjaCk6CisgICAgICAgICguc3dhdGNoLWlubmVyKToKKyAgICAg
ICAgKC5zcGVjdHJ1bS1jb250YWluZXIpOgorICAgICAgICAoLnNwZWN0cnVtLXRvcCk6CisgICAg
ICAgICguc3BlY3RydW0tY29sb3IpOgorICAgICAgICAoLnNwZWN0cnVtLWh1ZSk6CisgICAgICAg
ICguc3BlY3RydW0tZmlsbCk6CisgICAgICAgICguc3BlY3RydW0tc2F0LCAuc3BlY3RydW0tdmFs
LCAuc3BlY3RydW0tdG9wLWlubmVyKToKKyAgICAgICAgKC5zcGVjdHJ1bS1yYW5nZS1jb250YWlu
ZXIpOgorICAgICAgICAoLnNwZWN0cnVtLXJhbmdlLWNvbnRhaW5lciAqKToKKyAgICAgICAgKC5z
cGVjdHJ1bS1yYW5nZS1jb250YWluZXIgbGFiZWwpOgorICAgICAgICAoLnNwZWN0cnVtLXJhbmdl
LWNvbnRhaW5lciBpbnB1dCk6CisgICAgICAgICguc3dhdGNoLCAuc3BlY3RydW0tZHJhZ2dlciwg
LnNwZWN0cnVtLXNsaWRlcik6CisgICAgICAgICguc3BlY3RydW0tc2F0KToKKyAgICAgICAgKC5z
cGVjdHJ1bS12YWwpOgorICAgICAgICAoLnNwZWN0cnVtLWRyYWdnZXIpOgorICAgICAgICAoLnNw
ZWN0cnVtLXNsaWRlcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
aHRtbDoKKwogMjAxMi0wMS0wMiAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fp
by5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIEZpeCBjaHJvbWl1bSBtYWMgYnVp
bGQgYWZ0ZXIgcjEwMzkwNQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDgzMDVmY2UuLjM2OWVhMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTY0ODYsNiArNjQ4Niw3IEBACiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9Tb3VyY2VIVE1MVG9rZW5pemVyLmpzJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUphdmFTY3JpcHRUb2tlbml6ZXIuanMnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlVG9rZW5pemVyLmpzJywKKyAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NwZWN0cnVtLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL1NwbGl0Vmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9TdGF0dXNCYXJCdXR0b24uanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvU3R5bGVzU2lkZWJhclBhbmUuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagppbmRleCBmOWZmOTQ3Li4xNzJjNDU2IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzIwNzMsNiArNzIwNzMsMTAg
QEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGluc3BlY3Rvclxmcm9udC1lbmRcU3BlY3RydW0uanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXHNwbGl0
Vmlldy5jc3MiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCA5YmU5NWY4Li42ZTg0NmUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKQEAgLTQ0LDcg
KzQ0LDggQEAgdmFyIFByZWZlcmVuY2VzID0gewogICAgIGV4cG9zZVdvcmtlcnNJbnNwZWN0aW9u
OiBmYWxzZSwKICAgICBhcHBsaWNhdGlvblRpdGxlOiAiV2ViIEluc3BlY3RvciAtICVzIiwKICAg
ICBzaG93SGVhcFNuYXBzaG90T2JqZWN0c0hpZGRlblByb3BlcnRpZXM6IGZhbHNlLAotICAgIHNo
b3dEb2NrVG9SaWdodDogZmFsc2UKKyAgICBzaG93RG9ja1RvUmlnaHQ6IGZhbHNlLAorICAgIHVz
ZVNwZWN0cnVtOiB0cnVlCiB9CiAKIHZhciBDYXBhYmlsaXRpZXMgPSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NwZWN0cnVtLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TcGVjdHJ1bS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi40MzQ5ZTFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TcGVjdHJ1bS5qcwpAQCAtMCwwICsxLDQwNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBCcmlhbiBHcmluc3RlYWQgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
IAorV2ViSW5zcGVjdG9yLlNwZWN0cnVtID0gZnVuY3Rpb24oY29udGFpbmVyKQoreworICAgIHRo
aXMuX3BvcG92ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlBvcG92ZXIoKTsKKyAgICB0aGlzLl9wb3Bv
dmVyLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgc3RvcFByb3BhZ2F0aW9u
LCBmYWxzZSk7CisgICAgCisgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuY2xhc3NOYW1l
ID0gInNwZWN0cnVtLWNvbnRhaW5lciI7CisgICAgCisgICAgdmFyIHRvcEVsZW1lbnQgPSB0aGlz
Ll9jb250YWluZXJFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0tdG9wIik7Cisg
ICAgdG9wRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVtLWZpbGwiKTsKKworICAg
IHZhciB0b3BJbm5lckVsZW1lbnQgPSB0b3BFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic3Bl
Y3RydW0tdG9wLWlubmVyIik7CisgICAgdGhpcy5fZHJhZ2dlckVsZW1lbnQgPSB0b3BJbm5lckVs
ZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJzcGVjdHJ1bS1jb2xvciIpOworICAgIHRoaXMuX2Ry
YWdIZWxwZXJFbGVtZW50ID0gdGhpcy5fZHJhZ2dlckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIs
ICJzcGVjdHJ1bS1zYXQiKS5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVtLXZhbCIpLmNyZWF0
ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0tZHJhZ2dlciIpOworICAgIAorICAgIHRoaXMuX3NsaWRl
ckVsZW1lbnQgPSB0b3BJbm5lckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJzcGVjdHJ1bS1o
dWUiKTsKKyAgICB0aGlzLnNsaWRlSGVscGVyID0gdGhpcy5fc2xpZGVyRWxlbWVudC5jcmVhdGVD
aGlsZCgiZGl2IiwgInNwZWN0cnVtLXNsaWRlciIpOworICAgIAorICAgIHZhciByYW5nZUNvbnRh
aW5lciA9IHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJzcGVjdHJ1
bS1yYW5nZS1jb250YWluZXIiKTsKKyAgICB2YXIgYWxwaGFMYWJlbCA9IHJhbmdlQ29udGFpbmVy
LmNyZWF0ZUNoaWxkKCJsYWJlbCIpOworICAgIGFscGhhTGFiZWwudGV4dENvbnRlbnQgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoImFscGhhOiAiKTsKKyAgICAKKyAgICB0aGlzLl9hbHBoYUVsZW1l
bnQgPSByYW5nZUNvbnRhaW5lci5jcmVhdGVDaGlsZCgiaW5wdXQiLCAic3BlY3RydW0tcmFuZ2Ui
KTsKKyAgICB0aGlzLl9hbHBoYUVsZW1lbnQuc2V0QXR0cmlidXRlKCJ0eXBlIiwgInJhbmdlIik7
CisgICAgdGhpcy5fYWxwaGFFbGVtZW50LnNldEF0dHJpYnV0ZSgibWluIiwgIjAiKTsKKyAgICB0
aGlzLl9hbHBoYUVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXgiLCAiMTAwIik7CisgICAgdGhpcy5f
YWxwaGFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIGFscGhhRHJhZy5iaW5kKHRo
aXMpLCBmYWxzZSk7CisgICAgCisgICAgdmFyIHN3YXRjaEVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzcGFuIik7CisgICAgc3dhdGNoRWxlbWVudC5jbGFzc05hbWUgPSAic3dhdGNo
IjsKKyAgICB0aGlzLl9zd2F0Y2hJbm5lckVsZW1lbnQgPSBzd2F0Y2hFbGVtZW50LmNyZWF0ZUNo
aWxkKCJzcGFuIiwgInN3YXRjaC1pbm5lciIpOworICAgIAorICAgIHZhciBkaXNwbGF5Q29udGFp
bmVyID0gcmFuZ2VDb250YWluZXIuY3JlYXRlQ2hpbGQoImRpdiIpOworICAgIAorICAgIHZhciBj
b2xvckxhYmVsID0gZGlzcGxheUNvbnRhaW5lci5jcmVhdGVDaGlsZCgibGFiZWwiKTsKKyAgICBj
b2xvckxhYmVsLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJjb2xvcjogIik7
CisgICAgCisgICAgZGlzcGxheUNvbnRhaW5lci5hcHBlbmRDaGlsZChzd2F0Y2hFbGVtZW50KTsK
KyAgICAKKyAgICB0aGlzLl9kaXNwbGF5RWxlbWVudCA9IGRpc3BsYXlDb250YWluZXIuY3JlYXRl
Q2hpbGQoInNwYW4iKTsKKyAgICAKKyAgICBXZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxl
KHRoaXMuX3NsaWRlckVsZW1lbnQsIGh1ZURyYWcuYmluZCh0aGlzKSk7CisgICAgV2ViSW5zcGVj
dG9yLlNwZWN0cnVtLmRyYWdnYWJsZSh0aGlzLl9kcmFnZ2VyRWxlbWVudCwgY29sb3JEcmFnLmJp
bmQodGhpcykpOworICAgIAorICAgIGZ1bmN0aW9uIGh1ZURyYWcoZWxlbWVudCwgZHJhZ1gsIGRy
YWdZKSAKKyAgICB7CisgICAgICAgIHRoaXMuaHN2WzBdID0gKGRyYWdZIC8gdGhpcy5zbGlkZUhl
aWdodCk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9vbmNoYW5nZSgpOyAgCisgICAgfQorICAg
IAorICAgIGZ1bmN0aW9uIGNvbG9yRHJhZyhlbGVtZW50LCBkcmFnWCwgZHJhZ1kpIAorICAgIHsK
KyAgICAgICAgdGhpcy5oc3ZbMV0gPSBkcmFnWCAvIHRoaXMuZHJhZ1dpZHRoOworICAgICAgICB0
aGlzLmhzdlsyXSA9ICh0aGlzLmRyYWdIZWlnaHQgLSBkcmFnWSkgLyB0aGlzLmRyYWdIZWlnaHQ7
CisgICAgICAgIAorICAgICAgICB0aGlzLl9vbmNoYW5nZSgpOworICAgIH0KKyAgICAKKyAgICBm
dW5jdGlvbiBhbHBoYURyYWcoKSAKKyAgICB7CisgICAgICAgIHRoaXMuaHN2WzNdID0gdGhpcy5f
YWxwaGFFbGVtZW50LnZhbHVlIC8gMTAwOworICAgICAgICAKKyAgICAgICAgdGhpcy5fb25jaGFu
Z2UoKTsKKyAgICB9CisgICAgCisgICAgdGhpcy5faGlkZVByb3h5ID0gdGhpcy5oaWRlLmJpbmQo
dGhpcyk7Cit9CisKK1dlYkluc3BlY3Rvci5TcGVjdHJ1bS5oc3ZUb1JHQkEgPSBmdW5jdGlvbiho
LCBzLCB2LCBhKSAKK3sKKyAgICB2YXIgciwgZywgYjsKKyAgICAKKyAgICB2YXIgaSA9IE1hdGgu
Zmxvb3IoaCAqIDYpOworICAgIHZhciBmID0gaCAqIDYgLSBpOworICAgIHZhciBwID0gdiAqICgx
IC0gcyk7CisgICAgdmFyIHEgPSB2ICogKDEgLSBmICogcyk7CisgICAgdmFyIHQgPSB2ICogKDEg
LSAoMSAtIGYpICogcyk7CisgICAgCisgICAgc3dpdGNoKGkgJSA2KSB7CisgICAgY2FzZSAwOiAK
KyAgICAgICAgciA9IHYsIGcgPSB0LCBiID0gcDsgCisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
MTogCisgICAgICAgIHIgPSBxLCBnID0gdiwgYiA9IHA7IAorICAgICAgICBicmVhazsKKyAgICBj
YXNlIDI6IAorICAgICAgICByID0gcCwgZyA9IHYsIGIgPSB0OyAKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSAzOiAKKyAgICAgICAgciA9IHAsIGcgPSBxLCBiID0gdjsgCisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgNDogCisgICAgICAgIHIgPSB0LCBnID0gcCwgYiA9IHY7IAorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIDU6IAorICAgICAgICByID0gdiwgZyA9IHAsIGIgPSBxOyAKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIHJldHVybiBbciAqIDI1NSwgZyAqIDI1NSwgYiAq
IDI1NSwgYV07Cit9OworCitXZWJJbnNwZWN0b3IuU3BlY3RydW0ucmdiVG9IU1ZBID0gZnVuY3Rp
b24ociwgZywgYiwgYSkgCit7CisgICAgciA9IHIgLyAyNTU7CisgICAgZyA9IGcgLyAyNTU7Cisg
ICAgYiA9IGIgLyAyNTU7CisgICAgCisgICAgdmFyIG1heCA9IE1hdGgubWF4KHIsIGcsIGIpLCBt
aW4gPSBNYXRoLm1pbihyLCBnLCBiKTsKKyAgICB2YXIgaCwgcywgdiA9IG1heDsKKworICAgIHZh
ciBkID0gbWF4IC0gbWluOworICAgIHMgPSBtYXggPyBkIC8gbWF4IDogMDsKKworICAgIGlmKG1h
eCA9PT0gbWluKSB7CisgICAgICAgIC8vIEFjaHJvbWF0aWMuCisgICAgICAgIGggPSAwOyAKKyAg
ICB9IGVsc2UgeworICAgICAgICBzd2l0Y2gobWF4KSB7CisgICAgICAgIGNhc2UgcjogCisgICAg
ICAgICAgICBoID0gKGcgLSBiKSAvIGQgKyAoZyA8IGIgPyA2IDogMCk7IAorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgZzogCisgICAgICAgICAgICBoID0gKGIgLSByKSAvIGQgKyAy
OyAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGI6IAorICAgICAgICAgICAgaCA9
IChyIC0gZykgLyBkICsgNDsgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBoIC89IDY7CisgICAgfQorICAgIHJldHVybiBbaCwgcywgdiwgYV07Cit9OworCisvL0ZJWE1F
OiBtaWdyYXRlIHRvIFdlYkluc3BlY3Rvci5lbGVtZW50RHJhZ1N0YXJ0CitXZWJJbnNwZWN0b3Iu
U3BlY3RydW0uZHJhZ2dhYmxlID0gZnVuY3Rpb24oZWxlbWVudCwgb25tb3ZlLCBvbnN0YXJ0LCBv
bnN0b3ApIHsKKworICAgIHZhciBkb2MgPSBkb2N1bWVudDsKKyAgICB2YXIgZHJhZ2dpbmc7Cisg
ICAgdmFyIG9mZnNldDsKKyAgICB2YXIgc2Nyb2xsT2Zmc2V0OworICAgIHZhciBtYXhIZWlnaHQ7
CisgICAgdmFyIG1heFdpZHRoOworCisgICAgZnVuY3Rpb24gcHJldmVudChlKSAKKyAgICB7Cisg
ICAgICAgIGlmIChlLnN0b3BQcm9wYWdhdGlvbikKKyAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0
aW9uKCk7CisgICAgICAgIAorICAgICAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCkKKyAgICAgICAg
ICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gbW92ZShl
KSAKKyAgICB7CisgICAgICAgIGlmIChkcmFnZ2luZykgeworICAgICAgICAgICAgdmFyIGRyYWdY
ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oZS5wYWdlWCAtIG9mZnNldC5sZWZ0ICsgc2Nyb2xsT2Zm
c2V0LmxlZnQsIG1heFdpZHRoKSk7CisgICAgICAgICAgICB2YXIgZHJhZ1kgPSBNYXRoLm1heCgw
LCBNYXRoLm1pbihlLnBhZ2VZIC0gb2Zmc2V0LnRvcCArIHNjcm9sbE9mZnNldC50b3AsIG1heEhl
aWdodCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAob25tb3ZlKQorICAgICAgICAg
ICAgICAgIG9ubW92ZShlbGVtZW50LCBkcmFnWCwgZHJhZ1kpOyAKKyAgICAgICAgfSAKKyAgICB9
CisgICAgCisgICAgZnVuY3Rpb24gc3RhcnQoZSkgCisgICAgeyAKKyAgICAgICAgdmFyIHJpZ2h0
Q2xpY2sgPSBlLndoaWNoID8gKGUud2hpY2ggPT09IDMpIDogKGUuYnV0dG9uID09PSAyKTsKKyAg
ICAgICAgCisgICAgICAgIGlmICghcmlnaHRDbGljayAmJiAhZHJhZ2dpbmcpIHsgCisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmIChvbnN0YXJ0KQorICAgICAgICAgICAgICAgIG9uc3RhcnQo
ZWxlbWVudCwgZSkKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZHJhZ2dpbmcgPSB0cnVlOyAK
KyAgICAgICAgICAgIG1heEhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgbWF4V2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBzY3JvbGxPZmZzZXQgPSBlbGVtZW50LnNjcm9sbE9mZnNldCgpOworICAgICAgICAgICAg
b2Zmc2V0ID0gZWxlbWVudC50b3RhbE9mZnNldCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdHN0YXJ0IiwgcHJl
dmVudCwgZmFsc2UpOworICAgICAgICAgICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdzdGFy
dCIsIHByZXZlbnQsIGZhbHNlKTsKKyAgICAgICAgICAgIGRvYy5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZW1vdmUiLCBtb3ZlLCBmYWxzZSk7CisgICAgICAgICAgICBkb2MuYWRkRXZlbnRMaXN0ZW5l
cigibW91c2V1cCIsIHN0b3AsIGZhbHNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHJl
dmVudChlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBzdG9wKGUpIAor
ICAgIHsgCisgICAgICAgIGlmIChkcmFnZ2luZykgeyAKKyAgICAgICAgICAgIGRvYy5yZW1vdmVF
dmVudExpc3RlbmVyKCJzZWxlY3RzdGFydCIsIHByZXZlbnQsIGZhbHNlKTsKKyAgICAgICAgICAg
IGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCBwcmV2ZW50LCBmYWxzZSk7Cisg
ICAgICAgICAgICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgbW92ZSwgZmFs
c2UpOworICAgICAgICAgICAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBzdG9w
LCBmYWxzZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChvbnN0b3ApCisgICAgICAg
ICAgICAgICAgb25zdG9wKGVsZW1lbnQsIGUpOyAKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgZHJhZ2dpbmcgPSBmYWxzZTsgCisgICAgfQorICAgIAorICAgIGVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2Vkb3duIiwgc3RhcnQsIGZhbHNlKTsKK307CisKK1dlYkluc3BlY3Rvci5T
cGVjdHJ1bS5wcm90b3R5cGUgPSB7CisgICAgc2V0IGNvbG9yKGNvbG9yKQorICAgIHsKKyAgICAg
ICAgdmFyIHJnYmEgPSAoY29sb3IucmdiYSB8fCBjb2xvci5yZ2IpLnNsaWNlKDApOworICAgICAg
ICAKKyAgICAgICAgaWYgKHJnYmEubGVuZ3RoID09PSAzKQorICAgICAgICAgICAgcmdiYVszXSA9
IDE7CisgICAgICAgIAorICAgICAgICB0aGlzLmhzdiA9IFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5y
Z2JUb0hTVkEocmdiYVswXSwgcmdiYVsxXSwgcmdiYVsyXSwgcmdiYVszXSk7CisgICAgfSwKKwor
ICAgIGdldCBjb2xvcigpCisgICAgeworICAgICAgICB2YXIgcmdiID0gV2ViSW5zcGVjdG9yLlNw
ZWN0cnVtLmhzdlRvUkdCQSh0aGlzLmhzdlswXSwgdGhpcy5oc3ZbMV0sIHRoaXMuaHN2WzJdLCB0
aGlzLmhzdlszXSk7CisgICAgICAgIHZhciByb3VuZCA9IFtNYXRoLnJvdW5kKHJnYlswXSksIE1h
dGgucm91bmQocmdiWzFdKSwgTWF0aC5yb3VuZChyZ2JbMl0pLCByZ2JbM11dOworICAgICAgICB2
YXIgY29sb3I7CisgICAgICAgIAorICAgICAgICBpZiAocmdiWzNdID09PSAxKSB7CisgICAgICAg
ICAgICBjb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5mcm9tUkdCKHJvdW5kWzBdLCByb3VuZFsx
XSwgcm91bmRbMl0pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29s
b3IgPSBXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVJHQkEocm91bmRbMF0sIHJvdW5kWzFdLCByb3Vu
ZFsyXSwgcm91bmRbM10pOworICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yKGNvbG9yLnRvU3RyaW5nKHRoaXMub3V0
cHV0Q29sb3JGb3JtYXQpKTsKKyAgICB9LAorICAgIAorICAgIGdldCBvdXRwdXRDb2xvckZvcm1h
dCgpCisgICAgeworICAgICAgICB2YXIgY2YgPSBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBh
bmUuQ29sb3JGb3JtYXQ7CisgICAgICAgIHZhciBmb3JtYXQgPSB0aGlzLl9vcmlnaW5hbEZvcm1h
dDsKKyAgICAgICAgCisgICAgICAgIGlmICh0aGlzLmhzdlszXSA9PT0gMSkgeworICAgICAgICAg
ICAgLy8gU2ltcGxpZnkgdHJhbnNwYXJlbnQgZm9ybWF0cy4KKyAgICAgICAgICAgIGlmIChmb3Jt
YXQgPT09IGNmLlJHQkEpCisgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuUkdCOworICAgICAg
ICAgICAgZWxzZSBpZiAoZm9ybWF0ID09PSBjZi5IU0xBKQorICAgICAgICAgICAgICAgIGZvcm1h
dCA9IGNmLkhTTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIEV2
ZXJ5dGhpbmcgZXhjZXB0IEhTTChBKSBzaG91bGQgcmV0dXJuZWQgYXMgUkdCQSBpZiB0cmFuc3Bh
cmVuY3kgaXMgaW52b2x2ZWQuCisgICAgICAgICAgICBpZiAoZm9ybWF0ID09PSBjZi5IU0wgfHwg
Zm9ybWF0ID09PSBjZi5IU0xBKQorICAgICAgICAgICAgICAgIGZvcm1hdCA9IGNmLkhTTEE7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuUkdCQTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICB9LAorICAgIAorICAg
IGdldCBjb2xvckh1ZU9ubHkoKQorICAgIHsKKyAgICAgICAgdmFyIHJnYiA9IFdlYkluc3BlY3Rv
ci5TcGVjdHJ1bS5oc3ZUb1JHQkEodGhpcy5oc3ZbMF0sIDEsIDEsIDEpOworICAgICAgICB2YXIg
cm91bmQgPSBbTWF0aC5yb3VuZChyZ2JbMF0pLCBNYXRoLnJvdW5kKHJnYlsxXSksIE1hdGgucm91
bmQocmdiWzJdKSwgcmdiWzNdXTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0
b3IuQ29sb3IuZnJvbVJHQkEocm91bmRbMF0sIHJvdW5kWzFdLCByb3VuZFsyXSwgcm91bmRbM10p
OworICAgIH0sCisgICAgCisgICAgc2V0IGRpc3BsYXlUZXh0KHRleHQpIAorICAgIHsKKyAgICAg
ICAgdGhpcy5fZGlzcGxheUVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OworICAgIH0sCisgICAg
CisgICAgX29uY2hhbmdlOiBmdW5jdGlvbigpIAorICAgIHsKKyAgICAgICAgdGhpcy5fdXBkYXRl
VUkoKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImNoYW5nZSIsIHRo
aXMuY29sb3IpOworICAgIH0sCisgICAgCisKKyAgICBfdXBkYXRlSGVscGVyTG9jYXRpb25zOiBm
dW5jdGlvbigpIAorICAgIHsKKyAgICAgICAgdmFyIGggPSB0aGlzLmhzdlswXTsKKyAgICAgICAg
dmFyIHMgPSB0aGlzLmhzdlsxXTsKKyAgICAgICAgdmFyIHYgPSB0aGlzLmhzdlsyXTsKKyAgICAg
ICAgCisgICAgICAgIC8vIFdoZXJlIHRvIHNob3cgdGhlIGxpdHRsZSBjaXJjbGUgaW4gdGhhdCBk
aXNwbGF5cyB5b3VyIGN1cnJlbnQgc2VsZWN0ZWQgY29sb3IuCisgICAgICAgIHZhciBkcmFnWCA9
IHMgKiB0aGlzLmRyYWdXaWR0aDsKKyAgICAgICAgdmFyIGRyYWdZID0gdGhpcy5kcmFnSGVpZ2h0
IC0gKHYgKiB0aGlzLmRyYWdIZWlnaHQpOworICAgICAgICAKKyAgICAgICAgZHJhZ1ggPSBNYXRo
Lm1heCgtdGhpcy5fZHJhZ0hlbHBlckVsZW1lbnRIZWlnaHQsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgTWF0aC5taW4odGhpcy5kcmFnV2lkdGggLSB0aGlzLl9kcmFnSGVscGVyRWxlbWVudEhl
aWdodCwgZHJhZ1ggLSB0aGlzLl9kcmFnSGVscGVyRWxlbWVudEhlaWdodCkpOworICAgICAgICBk
cmFnWSA9IE1hdGgubWF4KC10aGlzLl9kcmFnSGVscGVyRWxlbWVudEhlaWdodCwgCisgICAgICAg
ICAgICAgICAgICAgICAgICBNYXRoLm1pbih0aGlzLmRyYWdIZWlnaHQgLSB0aGlzLl9kcmFnSGVs
cGVyRWxlbWVudEhlaWdodCwgZHJhZ1kgLSB0aGlzLl9kcmFnSGVscGVyRWxlbWVudEhlaWdodCkp
OworICAgICAgICAKKyAgICAgICAgdGhpcy5fZHJhZ0hlbHBlckVsZW1lbnQucG9zaXRpb25BdChk
cmFnWCwgZHJhZ1kpOworICAgICAgICAKKyAgICAgICAgLy8gV2hlcmUgdG8gc2hvdyB0aGUgYmFy
IHRoYXQgZGlzcGxheXMgeW91ciBjdXJyZW50IHNlbGVjdGVkIGh1ZS4KKyAgICAgICAgdmFyIHNs
aWRlWSA9IChoICogdGhpcy5zbGlkZUhlaWdodCkgLSB0aGlzLnNsaWRlSGVscGVySGVpZ2h0Owor
ICAgICAgICB0aGlzLnNsaWRlSGVscGVyLnN0eWxlLnRvcCA9IHNsaWRlWSArICJweCI7CisgICAg
ICAgIAorICAgICAgICB0aGlzLl9hbHBoYUVsZW1lbnQudmFsdWUgPSB0aGlzLmhzdlszXSAqIDEw
MDsKKyAgICB9LAorICAgIAorICAgIF91cGRhdGVVSTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fdXBkYXRlSGVscGVyTG9jYXRpb25zKCk7CisgICAgICAgIAorICAgICAgICB2YXIg
cmdiID0gKHRoaXMuY29sb3IucmdiYSB8fCB0aGlzLmNvbG9yLnJnYikuc2xpY2UoMCk7CisgICAg
ICAgIAorICAgICAgICBpZiAocmdiLmxlbmd0aCA9PT0gMykKKyAgICAgICAgICAgIHJnYlszXSA9
IDE7CisgICAgICAgICAgICAKKyAgICAgICAgdmFyIHJnYkh1ZU9ubHkgPSB0aGlzLmNvbG9ySHVl
T25seS5yZ2I7CisgICAgICAgIAorICAgICAgICB2YXIgZmxhdENvbG9yID0gInJnYigiICsgcmdi
SHVlT25seVswXSArICIsICIgKyByZ2JIdWVPbmx5WzFdICsgIiwgIiArIHJnYkh1ZU9ubHlbMl0g
KyAiKSI7CisgICAgICAgIHZhciBmdWxsQ29sb3IgPSAicmdiYSgiICsgcmdiWzBdICsgIiwgIiAr
IHJnYlsxXSArICIsICIgKyByZ2JbMl0gKyAiLCAiICsgcmdiWzNdICsgIikiOworICAgICAgICAK
KyAgICAgICAgdGhpcy5fZHJhZ2dlckVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gZmxh
dENvbG9yOworICAgICAgICB0aGlzLl9zd2F0Y2hJbm5lckVsZW1lbnQuc3R5bGUuYmFja2dyb3Vu
ZENvbG9yID0gZnVsbENvbG9yOworICAgICAgICAKKyAgICAgICAgdGhpcy5fYWxwaGFFbGVtZW50
LnZhbHVlID0gdGhpcy5oc3ZbM10gKiAxMDA7CisgICAgfSwKKyAgICAKKyAgICB0b2dnbGU6IGZ1
bmN0aW9uKGVsZW1lbnQsIGNvbG9yLCBmb3JtYXQpCisgICAgeworICAgICAgICBpZiAodGhpcy5f
aXNTaG93bikgCisgICAgICAgICAgICB0aGlzLmhpZGUoKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgdGhpcy5zaG93KGVsZW1lbnQsIGNvbG9yLCBmb3JtYXQpOworICAgICAgICAgICAgCisg
ICAgICAgIHJldHVybiB0aGlzLl9pc1Nob3duOworICAgIH0sCisgICAgCisgICAgc2hvdzogZnVu
Y3Rpb24oZWxlbWVudCwgY29sb3IsIGZvcm1hdCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9p
c1Nob3duKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgIAorICAgICAgICB0aGlz
Ll9pc1Nob3duID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5yZXBvc2l0aW9uKGVsZW1lbnQpOworICAg
ICAgICAKKyAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhp
cy5faGlkZVByb3h5KTsKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0
aGlzLl9oaWRlUHJveHkpOworICAgICAgICAKKyAgICAgICAgdGhpcy5zbGlkZUhlaWdodCA9IHRo
aXMuX3NsaWRlckVsZW1lbnQub2Zmc2V0SGVpZ2h0OworICAgICAgICB0aGlzLmRyYWdXaWR0aCA9
IHRoaXMuX2RyYWdnZXJFbGVtZW50Lm9mZnNldFdpZHRoOworICAgICAgICB0aGlzLmRyYWdIZWln
aHQgPSB0aGlzLl9kcmFnZ2VyRWxlbWVudC5vZmZzZXRIZWlnaHQ7CisgICAgICAgIHRoaXMuX2Ry
YWdIZWxwZXJFbGVtZW50SGVpZ2h0ID0gdGhpcy5fZHJhZ0hlbHBlckVsZW1lbnQub2Zmc2V0SGVp
Z2h0IC8gMjsKKyAgICAgICAgdGhpcy5zbGlkZUhlbHBlckhlaWdodCA9IHRoaXMuc2xpZGVIZWxw
ZXIub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgCisgICAgICAgIHRoaXMuY29sb3IgPSBjb2xv
cjsKKyAgICAgICAgdGhpcy5fb3JpZ2luYWxGb3JtYXQgPSBmb3JtYXQgfHwgY29sb3IuZm9ybWF0
OworICAgICAgICAKKyAgICAgICAgdGhpcy5fdXBkYXRlVUkoKTsKKyAgICB9LAorICAgIAorICAg
IHJlcG9zaXRpb246IGZ1bmN0aW9uKGVsZW1lbnQpIAorICAgIHsKKyAgICAgICAgdGhpcy5fcG9w
b3Zlci5zaG93KHRoaXMuX2NvbnRhaW5lckVsZW1lbnQsIGVsZW1lbnQpOworICAgIH0sCisgICAg
CisgICAgaGlkZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2lzU2hv
d247CisgICAgICAgIHRoaXMuX3BvcG92ZXIuaGlkZSgpOworICAgICAgICAKKyAgICAgICAgZG9j
dW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5faGlkZVByb3h5KTsK
KyAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9oaWRlUHJv
eHkpOworICAgICAgICAKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImhp
ZGUiLCB0aGlzLmNvbG9yKTsKKyAgICAgICAgCisgICAgICAgIC8vIE9ubHkgd2FudCB0byBhbGxv
dyBvbmUgaW5zdGFuY2UgdG8gYmUgb3BlbiBhdCBhIHRpbWUsIHNvIGNsZWFyIG91dCBhbnkgCisg
ICAgICAgIC8vIGV4aXN0aW5nIGV2ZW50IGxpc3RlbmVycy4KKyAgICAgICAgdGhpcy5yZW1vdmVB
bGxMaXN0ZW5lcnMoKTsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUu
anMKaW5kZXggM2Y5NTVjMS4uYWI4Y2ZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCkBAIC04OSw2ICs4OSw5
IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKGNvbXB1dGVkU3R5
bGVQYW5lKQogICAgIHRoaXMuX3NlY3Rpb25zQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CiAgICAgdGhpcy5ib2R5RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWN0
aW9uc0NvbnRhaW5lcik7CiAKKyAgICBpZiAoUHJlZmVyZW5jZXMudXNlU3BlY3RydW0pCisgICAg
ICAgIHRoaXMuX3NwZWN0cnVtID0gbmV3IFdlYkluc3BlY3Rvci5TcGVjdHJ1bSgpOworCiAgICAg
V2ViSW5zcGVjdG9yLmNzc01vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0
eWxlTW9kZWwuRXZlbnRzLlN0eWxlU2hlZXRDaGFuZ2VkLCB0aGlzLl9zdHlsZVNoZWV0T3JNZWRp
YVF1ZXJ5UmVzdWx0Q2hhbmdlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk1lZGlhUXVl
cnlSZXN1bHRDaGFuZ2VkLCB0aGlzLl9zdHlsZVNoZWV0T3JNZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdl
ZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5BdHRyTW9kaWZpZWQsIHRoaXMuX2F0dHJpYnV0ZXNN
b2RpZmllZCwgdGhpcyk7CkBAIC0xNjAxLDI4ICsxNjA0LDkzIEBAIFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7CiAgICAgICAgICAgICAgICAgfQog
CisgICAgICAgICAgICAgICAgdmFyIGZvcm1hdCA9IGdldEZvcm1hdCgpOworICAgICAgICAgICAg
ICAgIHZhciBoYXNDb2xvcnBpY2tlciA9IHNlbGYuX3BhcmVudFBhbmU7CisgICAgICAgICAgICAg
ICAgdmFyIHNwZWN0cnVtID0gaGFzQ29sb3JwaWNrZXIgPyBzZWxmLl9wYXJlbnRQYW5lLl9zcGVj
dHJ1bSA6IG51bGw7CisKICAgICAgICAgICAgICAgICB2YXIgc3dhdGNoRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50
LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbGljayB0byBjaGFuZ2UgY29sb3IgZm9y
bWF0Iik7Ci0gICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5jbGFzc05hbWUgPSAic3dhdGNo
IjsKLSAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCJiYWNr
Z3JvdW5kLWNvbG9yIiwgdGV4dCk7Ci0KLSAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgY2hhbmdlQ29sb3JEaXNwbGF5LCBmYWxzZSk7Ci0gICAg
ICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIGZ1
bmN0aW9uKGV2ZW50KSB7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpIH0sIGZhbHNlKTsKLQotICAg
ICAgICAgICAgICAgIHZhciBmb3JtYXQ7Ci0gICAgICAgICAgICAgICAgdmFyIGZvcm1hdFNldHRp
bmcgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY29sb3JGb3JtYXQuZ2V0KCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKGZvcm1hdFNldHRpbmcgPT09IGNmLk9yaWdpbmFsKQotICAgICAgICAgICAgICAg
ICAgICBmb3JtYXQgPSBjZi5PcmlnaW5hbDsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjb2xv
ci5uaWNrbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuTmlja25hbWU7Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0U2V0dGluZyA9PT0gY2YuUkdCKQotICAgICAg
ICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3Iuc2ltcGxlID8gY2YuUkdCIDogY2YuUkdCQSk7
Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0U2V0dGluZyA9PT0gY2YuSFNMKQotICAg
ICAgICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3Iuc2ltcGxlID8gY2YuSFNMIDogY2YuSFNM
QSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoY29sb3Iuc2ltcGxlKQotICAgICAgICAgICAg
ICAgICAgICBmb3JtYXQgPSAoY29sb3IuaGFzU2hvcnRIZXgoKSA/IGNmLlNob3J0SEVYIDogY2Yu
SEVYKTsKKyAgICAgICAgICAgICAgICB2YXIgc3dhdGNoSW5uZXJFbGVtZW50ID0gc3dhdGNoRWxl
bWVudC5jcmVhdGVDaGlsZCgic3BhbiIsICJzd2F0Y2gtaW5uZXIiKTsKKyAgICAgICAgICAgICAg
ICBpZiAoaGFzQ29sb3JwaWNrZXIpCisgICAgICAgICAgICAgICAgICAgIHN3YXRjaEVsZW1lbnQu
dGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsaWNrIHRvIG9wZW4gYSBjb2xvcnBpY2tl
ciIpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0g
Y2YuUkdCQTsKKyAgICAgICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC50aXRsZSA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gY2hhbmdlIGNvbG9yIGZvcm1hdCIpOworCisgICAg
ICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5jbGFzc05hbWUgPSAic3dhdGNoIjsKKworICAgICAg
ICAgICAgICAgIHN3YXRjaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgc3Rv
cFByb3BhZ2F0aW9uLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJjbGljayIsIHN3YXRjaENsaWNrLCBmYWxzZSk7CisgICAgICAgICAgICAg
ICAgc3dhdGNoRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIHN0b3BQcm9wYWdh
dGlvbiwgZmFsc2UpOworCisgICAgICAgICAgICAgICAgc3dhdGNoSW5uZXJFbGVtZW50LnN0eWxl
LmJhY2tncm91bmRDb2xvciA9IHRleHQ7CisKKyAgICAgICAgICAgICAgICB2YXIgc2Nyb2xsZXJF
bGVtZW50ID0gaGFzQ29sb3JwaWNrZXIgPyBzZWxmLl9wYXJlbnRQYW5lLl9jb21wdXRlZFN0eWxl
UGFuZS5lbGVtZW50LnBhcmVudEVsZW1lbnQgOiBudWxsOworCisgICAgICAgICAgICAgICAgZnVu
Y3Rpb24gc3BlY3RydW1DaGFuZ2UoZSkgCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBjb2xvciA9IGUuZGF0YTsKKworICAgICAgICAgICAgICAgICAgICB2YXIgY29sb3JT
dHJpbmcgPSBjb2xvci50b1N0cmluZygpOworCisgICAgICAgICAgICAgICAgICAgIGNvbG9yVmFs
dWVFbGVtZW50LnRleHRDb250ZW50ID0gY29sb3JTdHJpbmc7CisgICAgICAgICAgICAgICAgICAg
IHNwZWN0cnVtLmRpc3BsYXlUZXh0ID0gY29sb3JTdHJpbmc7CisgICAgICAgICAgICAgICAgICAg
IHN3YXRjaElubmVyRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvclN0cmluZzsK
KworICAgICAgICAgICAgICAgICAgICBzZWxmLmFwcGx5U3R5bGVUZXh0KG5hbWVFbGVtZW50LnRl
eHRDb250ZW50ICsgIjogIiArIHZhbHVlRWxlbWVudC50ZXh0Q29udGVudCwgZmFsc2UsIGZhbHNl
LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZnVuY3Rpb24g
c3BlY3RydW1IaWRlKCkgCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBz
Y3JvbGxlckVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgcmVwb3NpdGlvblNw
ZWN0cnVtLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwbHlTdHlsZVRleHQo
bmFtZUVsZW1lbnQudGV4dENvbnRlbnQgKyAiOiAiICsgdmFsdWVFbGVtZW50LnRleHRDb250ZW50
LCB0cnVlLCB0cnVlLCBmYWxzZSk7CisKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNlbGYu
X3BhcmVudFBhbmUuX2lzRWRpdGluZ1N0eWxlOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uIHJlcG9zaXRpb25TcGVjdHJ1bSgpIAorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgc3BlY3RydW0ucmVwb3NpdGlvbihzd2F0Y2hFbGVtZW50
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBzd2F0Y2hD
bGljayhlKSAKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIEFsdCAr
IGNsaWNrIHRvZ2dsZXMgY29sb3IgZm9ybWF0cy4KKyAgICAgICAgICAgICAgICAgICAgLy8gQ2xp
Y2sgb3BlbnMgY29sb3JwaWNrZXIsIG9ubHkgaWYgdGhlIGVsZW1lbnQgaXMgbm90IGluIGNvbXB1
dGVkIHN0eWxlcyBzZWN0aW9uLgorCisgICAgICAgICAgICAgICAgICAgIGlmICghc3BlY3RydW0g
fHwgZS5hbHRLZXkpCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VDb2xvckRpc3BsYXko
ZSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGhhc0NvbG9ycGlja2VyKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgaXNTaG93biA9IHNwZWN0cnVtLnRvZ2dsZShzd2F0Y2hF
bGVtZW50LCBjb2xvciwgZm9ybWF0KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlz
U2hvd24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3RydW0uZGlzcGxheVRl
eHQgPSBjb2xvci50b1N0cmluZyhmb3JtYXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9wYXJlbnRQYW5lLl9pc0VkaXRpbmdTdHlsZSA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNwZWN0cnVtLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHNwZWN0
cnVtQ2hhbmdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3RydW0uYWRkRXZl
bnRMaXN0ZW5lcigiaGlkZSIsIHNwZWN0cnVtSGlkZSk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2Nyb2xsZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHJlcG9z
aXRpb25TcGVjdHJ1bSwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZnVu
Y3Rpb24gZ2V0Rm9ybWF0KCkgCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICB2YXIgZm9ybWF0OworICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybWF0U2V0dGluZyA9IFdl
Ykluc3BlY3Rvci5zZXR0aW5ncy5jb2xvckZvcm1hdC5nZXQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGZvcm1hdFNldHRpbmcgPT09IGNmLk9yaWdpbmFsKQorICAgICAgICAgICAgICAgICAg
ICAgICAgZm9ybWF0ID0gY2YuT3JpZ2luYWw7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGNvbG9yLm5pY2tuYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuTmlj
a25hbWU7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvcm1hdFNldHRpbmcgPT09IGNm
LlJHQikKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IChjb2xvci5zaW1wbGUgPyBj
Zi5SR0IgOiBjZi5SR0JBKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0U2V0
dGluZyA9PT0gY2YuSFNMKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gKGNvbG9y
LnNpbXBsZSA/IGNmLkhTTCA6IGNmLkhTTEEpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
IChjb2xvci5zaW1wbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3Iu
aGFzU2hvcnRIZXgoKSA/IGNmLlNob3J0SEVYIDogY2YuSEVYKTsKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuUkdCQTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0Owor
ICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHZhciBjb2xvclZhbHVlRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgICAgICAgICBjb2xv
clZhbHVlRWxlbWVudC50ZXh0Q29udGVudCA9IGNvbG9yLnRvU3RyaW5nKGZvcm1hdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggNjY0MjVj
Ny4uOWQ4NWQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2Vi
S2l0LnFyYwpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgPGZpbGU+U291cmNlSFRNTFRva2VuaXpl
ci5qczwvZmlsZT4KICAgICA8ZmlsZT5Tb3VyY2VKYXZhU2NyaXB0VG9rZW5pemVyLmpzPC9maWxl
PgogICAgIDxmaWxlPlNvdXJjZVRva2VuaXplci5qczwvZmlsZT4KKyAgICA8ZmlsZT5TcGVjdHJ1
bS5qczwvZmlsZT4KICAgICA8ZmlsZT5TcGxpdFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+U3Rh
dHVzQmFyQnV0dG9uLmpzPC9maWxlPgogICAgIDxmaWxlPlN0eWxlc1NpZGViYXJQYW5lLmpzPC9m
aWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
Y3NzCmluZGV4IGUwNWYwNjUuLmEwMjIyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTE0NDUsNiArMTQ0NSwxMyBAQCBsaS5l
ZGl0aW5nIC5zd2F0Y2gsIGxpLmVkaXRpbmcgLmVuYWJsZWQtYnV0dG9uLCAgbGkuZWRpdGluZy1z
dWItcGFydCAuZGVsZXRlLWJ1dAogICAgIHdpZHRoOiAxZW07CiAgICAgaGVpZ2h0OiAxZW07CiAg
ICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjgsIDEyOCwgMTI4LCAwLjYpOworICAgIGJhY2tn
cm91bmQtaW1hZ2U6IHVybChJbWFnZXMvY2hlY2tlci5wbmcpOworfQorCisuc3dhdGNoLWlubmVy
IHsgCisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIGRpc3BsYXk6IGJs
b2NrOwogfQogCiAuc3dhdGNoOmhvdmVyIHsKQEAgLTI2MzksMyArMjY0NiwxMDggQEAgYm9keS5w
bGF0Zm9ybS1tYWMgI2RyYXdlci1zdGF0dXMtYmFyIC5zZWFyY2gtc3RhdHVzLWJhci1wcm9ncmVz
cyB7CiAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICBib3JkZXItd2lkdGg6IDAg
MCAxMXB4IDA7CiB9CisKKy8qIGh0dHBzOi8vZ2l0aHViLmNvbS9iZ3JpbnMvc3BlY3RydW0gKi8K
Ky5zcGVjdHJ1bS1jb250YWluZXIgeyAKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7IAorICAgIHRv
cDogMDsgCisgICAgbGVmdDogMDsgCisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIGJh
Y2tncm91bmQ6IHJnYmEoMjMwLCAyMzAsIDIzMCwgMSkgIWltcG9ydGFudDsKKyAgICBib3JkZXI6
IDFweCBzb2xpZCAjNjQ2NDY0OworICAgIHBhZGRpbmc6IDEwcHg7CisgICAgd2lkdGg6IDIwMHB4
OworICAgIHotaW5kZXg6IDEwOworfQorCisuc3BlY3RydW0tdG9wIHsKKyAgICBwb3NpdGlvbjog
cmVsYXRpdmU7IAorICAgIHdpZHRoOiAxMDAlOworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
K30KKworLnNwZWN0cnVtLWNvbG9yIHsgCisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRv
cDogMDsKKyAgICBsZWZ0OiAwOworICAgIGJvdHRvbTogMDsKKyAgICByaWdodDogMjAlOworfQor
Cisuc3BlY3RydW0taHVlIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOwor
ICAgIHJpZ2h0OiAwOworICAgIGJvdHRvbTogMDsKKyAgICBsZWZ0OiA4MyU7Cit9CisKKy5zcGVj
dHJ1bS1maWxsIHsgCisgICAgLyogU2FtZSBhcyBzcGVjdHJ1bS1jb2xvciB3aWR0aCB0byBmb3Jj
ZSBhc3BlY3QgcmF0aW8uICovCisgICAgbWFyZ2luLXRvcDogODAlOyAKK30KKworLnNwZWN0cnVt
LXNhdCwgLnNwZWN0cnVtLXZhbCwgLnNwZWN0cnVtLXRvcC1pbm5lciB7IAorICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsgCisgICAgdG9wOiAwOyAKKyAgICBsZWZ0OiAwOyAKKyAgICByaWdodDogMDsg
CisgICAgYm90dG9tOiAwOyAKK30KKworLnNwZWN0cnVtLXJhbmdlLWNvbnRhaW5lciB7CisgICAg
cG9zaXRpb246IHJlbGF0aXZlOworICAgIHBhZGRpbmctdG9wOiAxMHB4OworfQorCisuc3BlY3Ry
dW0tcmFuZ2UtY29udGFpbmVyICogeworICAgIGZvbnQtc2l6ZTogOXB4OworICAgIHZlcnRpY2Fs
LWFsaWduOiBtaWRkbGU7Cit9CisKKy5zcGVjdHJ1bS1yYW5nZS1jb250YWluZXIgbGFiZWwgewor
ICAgIHdpZHRoOiAzMnB4OworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKK30KKworLnNwZWN0
cnVtLXJhbmdlLWNvbnRhaW5lciBpbnB1dCB7IAorICAgIHdpZHRoOiAxMzBweDsgCit9CisKKy5z
d2F0Y2gsIC5zcGVjdHJ1bS1kcmFnZ2VyLCAuc3BlY3RydW0tc2xpZGVyIHsgCisgICAgLXdlYmtp
dC11c2VyLXNlbGVjdDogbm9uZTsKK30KKworLnNwZWN0cnVtLXNhdCB7CisgICAgYmFja2dyb3Vu
ZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCwgd2hpdGUsIHJnYmEoMjA0LCAx
NTQsIDEyOSwgMCkpOworfQorCisuc3BlY3RydW0tdmFsIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdl
OiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChib3R0b20sIGJsYWNrLCByZ2JhKDIwNCwgMTU0LCAx
MjksIDApKTsKK30KKworLnNwZWN0cnVtLWh1ZSB7CisgICAgYmFja2dyb3VuZDogLXdlYmtpdC1s
aW5lYXItZ3JhZGllbnQodG9wLCAjZmYwMDAwIDAlLCAjZmZmZjAwIDE3JSwgIzAwZmYwMCAzMyUs
ICMwMGZmZmYgNTAlLCAjMDAwMGZmIDY3JSwgI2ZmMDBmZiA4MyUsICNmZjAwMDAgMTAwJSk7Cit9
CisKKy5zcGVjdHJ1bS1kcmFnZ2VyIHsKKyAgICBib3JkZXItcmFkaXVzOiA1cHg7IAorICAgIGhl
aWdodDogNXB4OyAKKyAgICB3aWR0aDogNXB4OyAKKyAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDNw
eDsKKyAgICBjdXJzb3I6IHBvaW50ZXI7CisgICAgcG9zaXRpb246IGFic29sdXRlOyAKKyAgICB0
b3A6IDA7IAorICAgIGxlZnQ6IDA7Cit9CisKKy5zcGVjdHJ1bS1zbGlkZXIgeyAKKyAgICBwb3Np
dGlvbjogYWJzb2x1dGU7IAorICAgIHRvcDogMDsgCisgICAgY3Vyc29yOiBwb2ludGVyOworICAg
IGhlaWdodDogNXB4OyAKKyAgICB3aWR0aDogMTEwJTsKKyAgICBtYXJnaW4tbGVmdDogLTUlOwor
ICAgIGJhY2tncm91bmQ6IHdoaXRlOyAKKyAgICBvcGFjaXR5OiAuODsgCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCA1MGU5
MTlhLi44YjU3ZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmh0bWwKQEAgLTgyLDYgKzgyLDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJBcHBsaWNhdGlvbkNhY2hlTW9kZWwuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkFwcGxpY2F0
aW9uQ2FjaGVJdGVtc1ZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IlNjcmlwdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iU3BlY3RydW0uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNpZGViYXJQYW5lLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJFbGVtZW50c1RyZWVPdXRsaW5l
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJE
T01QcmVzZW50YXRpb25VdGlscy5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126438</attachid>
            <date>2012-02-09 19:50:33 -0800</date>
            <delta_ts>2012-02-13 07:28:52 -0800</delta_ts>
            <desc>Patch to provide colorpicker functionality inside of the styles sidebar for the web inspector frontend</desc>
            <filename>71262.patch</filename>
            <type>text/plain</type>
            <size>28279</size>
            <attacher name="Brian Grinstead">briangrinstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4MWE5ZDFmLi5jNzA4NTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEg
QEAKKzIwMTItMDItMDkgIEJyaWFuIEdyaW5zdGVhZCAgPGJyaWFuZ3JpbnN0ZWFkQGdtYWlsLmNv
bT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgY29sb3JwaWNrZXIgZnVuY3Rpb25hbGl0
eSB0byBjb2xvciBzd2F0Y2hlcyBpbiBTdHlsZXMgU2lkZWJhcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEyNjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovbG9jYWxpemVkU3Ry
aW5ncy5qczoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5n
cy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NwZWN0cnVtLmpzOiBBZGRlZC4K
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5odWVEcmFnKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TcGVjdHJ1bS5jb2xvckRyYWcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0
cnVtLmFscGhhRHJhZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmhzdmFUb1JHQkEpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNwZWN0cnVtLnJnYmFUb0hTVkEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVt
LmRyYWdnYWJsZS5wcmV2ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFn
Z2FibGUubW92ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxlLnN0
YXJ0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUuc3RvcCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuc2V0IGNvbG9yKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuZ2V0IGNvbG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TcGVjdHJ1bS5wcm90b3R5cGUuZ2V0IG91dHB1dENvbG9yRm9ybWF0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuZ2V0IGNvbG9ySHVlT25seSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLnNldCBkaXNwbGF5VGV4dCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLl9vbmNoYW5nZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLl91cGRhdGVIZWxwZXJMb2NhdGlvbnMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS5fdXBkYXRlVUkpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS50b2dnbGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUucmVwb3NpdGlvbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLmhpZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVz
U2lkZWJhclBhbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxl
bWVudC5wcm90b3R5cGUudXBkYXRlVGl0bGUuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
Y3NzOgorICAgICAgICAoLnN3YXRjaCk6CisgICAgICAgICguc3dhdGNoLWlubmVyKToKKyAgICAg
ICAgKC5zcGVjdHJ1bS1jb250YWluZXIpOgorICAgICAgICAoLnNwZWN0cnVtLXRvcCk6CisgICAg
ICAgICguc3BlY3RydW0tY29sb3IpOgorICAgICAgICAoLnNwZWN0cnVtLWh1ZSk6CisgICAgICAg
ICguc3BlY3RydW0tZmlsbCk6CisgICAgICAgICguc3BlY3RydW0tcmFuZ2UtY29udGFpbmVyKToK
KyAgICAgICAgKC5zcGVjdHJ1bS1yYW5nZS1jb250YWluZXIgKik6CisgICAgICAgICguc3BlY3Ry
dW0tcmFuZ2UtY29udGFpbmVyIGxhYmVsKToKKyAgICAgICAgKC5zcGVjdHJ1bS1yYW5nZS1jb250
YWluZXIgaW5wdXQpOgorICAgICAgICAoLnN3YXRjaCwgLnNwZWN0cnVtLWRyYWdnZXIsIC5zcGVj
dHJ1bS1zbGlkZXIpOgorICAgICAgICAoLnNwZWN0cnVtLXNhdCk6CisgICAgICAgICguc3BlY3Ry
dW0tdmFsKToKKyAgICAgICAgKC5zcGVjdHJ1bS1kcmFnZ2VyKToKKyAgICAgICAgKC5zcGVjdHJ1
bS1zbGlkZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6
CisKIDIwMTItMDEtMDIgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xp
dmVpcmFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBGaXggY2hyb21pdW0gbWFjIGJ1aWxkIGFm
dGVyIHIxMDM5MDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9j
YWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVk
U3RyaW5ncy5qcwppbmRleCAyZjhjYjc5Li44YTIwZDIzIDEwMDY0NApCaW5hcnkgZmlsZXMgYS9T
b3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYW5kIGIvU291
cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGRpZmZlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDgzMDVmY2UuLjM2OWVhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTY0
ODYsNiArNjQ4Niw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VI
VE1MVG9rZW5pemVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJj
ZUphdmFTY3JpcHRUb2tlbml6ZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvU291cmNlVG9rZW5pemVyLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5k
L1NwZWN0cnVtLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NwbGl0Vmll
dy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TdGF0dXNCYXJCdXR0b24u
anMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUu
anMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRl
eCBmOWZmOTQ3Li4xNzJjNDU2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagpAQCAtNzIwNzMsNiArNzIwNzMsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmls
ZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRc
U3BlY3RydW0uanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXHNwbGl0Vmlldy5jc3MiCiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NldHRpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5n
cy5qcwppbmRleCA5YmU5NWY4Li42ZTg0NmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKQEAgLTQ0LDcgKzQ0LDggQEAgdmFyIFByZWZlcmVu
Y2VzID0gewogICAgIGV4cG9zZVdvcmtlcnNJbnNwZWN0aW9uOiBmYWxzZSwKICAgICBhcHBsaWNh
dGlvblRpdGxlOiAiV2ViIEluc3BlY3RvciAtICVzIiwKICAgICBzaG93SGVhcFNuYXBzaG90T2Jq
ZWN0c0hpZGRlblByb3BlcnRpZXM6IGZhbHNlLAotICAgIHNob3dEb2NrVG9SaWdodDogZmFsc2UK
KyAgICBzaG93RG9ja1RvUmlnaHQ6IGZhbHNlLAorICAgIHVzZVNwZWN0cnVtOiB0cnVlCiB9CiAK
IHZhciBDYXBhYmlsaXRpZXMgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NwZWN0cnVtLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TcGVjdHJ1bS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTNi
YWM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TcGVjdHJ1bS5qcwpAQCAtMCwwICsxLDQwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBCcmlhbiBHcmluc3RlYWQgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuU3BlY3Ry
dW0gPSBmdW5jdGlvbihjb250YWluZXIpCit7CisgICAgdGhpcy5fcG9wb3ZlciA9IG5ldyBXZWJJ
bnNwZWN0b3IuUG9wb3ZlcigpOworICAgIHRoaXMuX3BvcG92ZXIuZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJtb3VzZWRvd24iLCBzdG9wUHJvcGFnYXRpb24sIGZhbHNlKTsKKworICAgIHRoaXMu
X2NvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0
aGlzLl9jb250YWluZXJFbGVtZW50LmNsYXNzTmFtZSA9ICJzcGVjdHJ1bS1jb250YWluZXIiOwor
CisgICAgdmFyIHRvcEVsZW1lbnQgPSB0aGlzLl9jb250YWluZXJFbGVtZW50LmNyZWF0ZUNoaWxk
KCJkaXYiLCAic3BlY3RydW0tdG9wIik7CisgICAgdG9wRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2
IiwgInNwZWN0cnVtLWZpbGwiKTsKKworICAgIHZhciB0b3BJbm5lckVsZW1lbnQgPSB0b3BFbGVt
ZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0tdG9wLWlubmVyIGZpbGwiKTsKKyAgICB0
aGlzLl9kcmFnZ2VyRWxlbWVudCA9IHRvcElubmVyRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2Iiwg
InNwZWN0cnVtLWNvbG9yIik7CisgICAgdGhpcy5fZHJhZ0hlbHBlckVsZW1lbnQgPSB0aGlzLl9k
cmFnZ2VyRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVtLXNhdCBmaWxsIikuY3Jl
YXRlQ2hpbGQoImRpdiIsICJzcGVjdHJ1bS12YWwgZmlsbCIpLmNyZWF0ZUNoaWxkKCJkaXYiLCAi
c3BlY3RydW0tZHJhZ2dlciIpOworCisgICAgdGhpcy5fc2xpZGVyRWxlbWVudCA9IHRvcElubmVy
RWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNwZWN0cnVtLWh1ZSIpOworICAgIHRoaXMuc2xp
ZGVIZWxwZXIgPSB0aGlzLl9zbGlkZXJFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3Ry
dW0tc2xpZGVyIik7CisKKyAgICB2YXIgcmFuZ2VDb250YWluZXIgPSB0aGlzLl9jb250YWluZXJF
bGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0tcmFuZ2UtY29udGFpbmVyIik7Cisg
ICAgdmFyIGFscGhhTGFiZWwgPSByYW5nZUNvbnRhaW5lci5jcmVhdGVDaGlsZCgibGFiZWwiKTsK
KyAgICBhbHBoYUxhYmVsLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJhbHBo
YTogIik7CisKKyAgICB0aGlzLl9hbHBoYUVsZW1lbnQgPSByYW5nZUNvbnRhaW5lci5jcmVhdGVD
aGlsZCgiaW5wdXQiLCAic3BlY3RydW0tcmFuZ2UiKTsKKyAgICB0aGlzLl9hbHBoYUVsZW1lbnQu
c2V0QXR0cmlidXRlKCJ0eXBlIiwgInJhbmdlIik7CisgICAgdGhpcy5fYWxwaGFFbGVtZW50LnNl
dEF0dHJpYnV0ZSgibWluIiwgIjAiKTsKKyAgICB0aGlzLl9hbHBoYUVsZW1lbnQuc2V0QXR0cmli
dXRlKCJtYXgiLCAiMTAwIik7CisgICAgdGhpcy5fYWxwaGFFbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImNoYW5nZSIsIGFscGhhRHJhZy5iaW5kKHRoaXMpLCBmYWxzZSk7CisKKyAgICB2YXIgc3dh
dGNoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBzd2F0Y2hF
bGVtZW50LmNsYXNzTmFtZSA9ICJzd2F0Y2giOworICAgIHRoaXMuX3N3YXRjaElubmVyRWxlbWVu
dCA9IHN3YXRjaEVsZW1lbnQuY3JlYXRlQ2hpbGQoInNwYW4iLCAic3dhdGNoLWlubmVyIik7CisK
KyAgICB2YXIgZGlzcGxheUNvbnRhaW5lciA9IHJhbmdlQ29udGFpbmVyLmNyZWF0ZUNoaWxkKCJk
aXYiKTsKKworICAgIHZhciBjb2xvckxhYmVsID0gZGlzcGxheUNvbnRhaW5lci5jcmVhdGVDaGls
ZCgibGFiZWwiKTsKKyAgICBjb2xvckxhYmVsLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJjb2xvcjogIik7CisKKyAgICBkaXNwbGF5Q29udGFpbmVyLmFwcGVuZENoaWxkKHN3
YXRjaEVsZW1lbnQpOworCisgICAgdGhpcy5fZGlzcGxheUVsZW1lbnQgPSBkaXNwbGF5Q29udGFp
bmVyLmNyZWF0ZUNoaWxkKCJzcGFuIik7CisKKyAgICBXZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJh
Z2dhYmxlKHRoaXMuX3NsaWRlckVsZW1lbnQsIGh1ZURyYWcuYmluZCh0aGlzKSk7CisgICAgV2Vi
SW5zcGVjdG9yLlNwZWN0cnVtLmRyYWdnYWJsZSh0aGlzLl9kcmFnZ2VyRWxlbWVudCwgY29sb3JE
cmFnLmJpbmQodGhpcykpOworCisgICAgZnVuY3Rpb24gaHVlRHJhZyhlbGVtZW50LCBkcmFnWCwg
ZHJhZ1kpIAorICAgIHsKKyAgICAgICAgdGhpcy5oc3ZbMF0gPSAoZHJhZ1kgLyB0aGlzLnNsaWRl
SGVpZ2h0KTsKKworICAgICAgICB0aGlzLl9vbmNoYW5nZSgpOyAgCisgICAgfQorCisgICAgZnVu
Y3Rpb24gY29sb3JEcmFnKGVsZW1lbnQsIGRyYWdYLCBkcmFnWSkgCisgICAgeworICAgICAgICB0
aGlzLmhzdlsxXSA9IGRyYWdYIC8gdGhpcy5kcmFnV2lkdGg7CisgICAgICAgIHRoaXMuaHN2WzJd
ID0gKHRoaXMuZHJhZ0hlaWdodCAtIGRyYWdZKSAvIHRoaXMuZHJhZ0hlaWdodDsKKworICAgICAg
ICB0aGlzLl9vbmNoYW5nZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFscGhhRHJhZygpIAor
ICAgIHsKKyAgICAgICAgdGhpcy5oc3ZbM10gPSB0aGlzLl9hbHBoYUVsZW1lbnQudmFsdWUgLyAx
MDA7CisKKyAgICAgICAgdGhpcy5fb25jaGFuZ2UoKTsKKyAgICB9CisKKyAgICB0aGlzLl9oaWRl
UHJveHkgPSB0aGlzLmhpZGUuYmluZCh0aGlzKTsKK307CisKK1dlYkluc3BlY3Rvci5TcGVjdHJ1
bS5FdmVudHMgPSB7CisgICAgQ29sb3JDaGFuZ2VkOiAiQ29sb3JDaGFuZ2VkIiwKKyAgICBIaWRk
ZW46ICJIaWRkZW4iCit9OworCitXZWJJbnNwZWN0b3IuU3BlY3RydW0uaHN2YVRvUkdCQSA9IGZ1
bmN0aW9uKGgsIHMsIHYsIGEpIAoreworICAgIHZhciByLCBnLCBiOworCisgICAgdmFyIGkgPSBN
YXRoLmZsb29yKGggKiA2KTsKKyAgICB2YXIgZiA9IGggKiA2IC0gaTsKKyAgICB2YXIgcCA9IHYg
KiAoMSAtIHMpOworICAgIHZhciBxID0gdiAqICgxIC0gZiAqIHMpOworICAgIHZhciB0ID0gdiAq
ICgxIC0gKDEgLSBmKSAqIHMpOworCisgICAgc3dpdGNoKGkgJSA2KSB7CisgICAgY2FzZSAwOiAK
KyAgICAgICAgciA9IHYsIGcgPSB0LCBiID0gcDsgCisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
MTogCisgICAgICAgIHIgPSBxLCBnID0gdiwgYiA9IHA7IAorICAgICAgICBicmVhazsKKyAgICBj
YXNlIDI6IAorICAgICAgICByID0gcCwgZyA9IHYsIGIgPSB0OyAKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSAzOiAKKyAgICAgICAgciA9IHAsIGcgPSBxLCBiID0gdjsgCisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgNDogCisgICAgICAgIHIgPSB0LCBnID0gcCwgYiA9IHY7IAorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIDU6IAorICAgICAgICByID0gdiwgZyA9IHAsIGIgPSBxOyAKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIFtNYXRoLnJvdW5kKHIgKiAyNTUpLCBNYXRo
LnJvdW5kKGcgKiAyNTUpLCBNYXRoLnJvdW5kKGIgKiAyNTUpLCBhXTsKK307CisKK1dlYkluc3Bl
Y3Rvci5TcGVjdHJ1bS5yZ2JhVG9IU1ZBID0gZnVuY3Rpb24ociwgZywgYiwgYSkgCit7CisgICAg
ciA9IHIgLyAyNTU7CisgICAgZyA9IGcgLyAyNTU7CisgICAgYiA9IGIgLyAyNTU7CisgICAgCisg
ICAgdmFyIG1heCA9IE1hdGgubWF4KHIsIGcsIGIpOworICAgIHZhciBtaW4gPSBNYXRoLm1pbihy
LCBnLCBiKTsKKyAgICB2YXIgaDsgCisgICAgdmFyIHM7IAorICAgIHZhciB2ID0gbWF4OworCisg
ICAgdmFyIGQgPSBtYXggLSBtaW47CisgICAgcyA9IG1heCA/IGQgLyBtYXggOiAwOworCisgICAg
aWYobWF4ID09PSBtaW4pIHsKKyAgICAgICAgLy8gQWNocm9tYXRpYy4KKyAgICAgICAgaCA9IDA7
IAorICAgIH0gZWxzZSB7CisgICAgICAgIHN3aXRjaChtYXgpIHsKKyAgICAgICAgY2FzZSByOiAK
KyAgICAgICAgICAgIGggPSAoZyAtIGIpIC8gZCArIChnIDwgYiA/IDYgOiAwKTsgCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBnOiAKKyAgICAgICAgICAgIGggPSAoYiAtIHIpIC8g
ZCArIDI7IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgYjogCisgICAgICAgICAg
ICBoID0gKHIgLSBnKSAvIGQgKyA0OyAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGggLz0gNjsKKyAgICB9CisgICAgcmV0dXJuIFtoLCBzLCB2LCBhXTsKK307CisKKy8v
RklYTUU6IG1pZ3JhdGUgdG8gV2ViSW5zcGVjdG9yLmVsZW1lbnREcmFnU3RhcnQKK1dlYkluc3Bl
Y3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUgPSBmdW5jdGlvbihlbGVtZW50LCBvbm1vdmUsIG9uc3Rh
cnQsIG9uc3RvcCkgeworCisgICAgdmFyIGRvYyA9IGRvY3VtZW50OworICAgIHZhciBkcmFnZ2lu
ZzsKKyAgICB2YXIgb2Zmc2V0OworICAgIHZhciBzY3JvbGxPZmZzZXQ7CisgICAgdmFyIG1heEhl
aWdodDsKKyAgICB2YXIgbWF4V2lkdGg7CisKKyAgICBmdW5jdGlvbiBwcmV2ZW50KGUpIAorICAg
IHsKKyAgICAgICAgaWYgKGUuc3RvcFByb3BhZ2F0aW9uKQorICAgICAgICAgICAgZS5zdG9wUHJv
cGFnYXRpb24oKTsKKworICAgICAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCkKKyAgICAgICAgICAg
IGUucHJldmVudERlZmF1bHQoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtb3ZlKGUpIAorICAg
IHsKKyAgICAgICAgaWYgKGRyYWdnaW5nKSB7CisgICAgICAgICAgICB2YXIgZHJhZ1ggPSBNYXRo
Lm1heCgwLCBNYXRoLm1pbihlLnBhZ2VYIC0gb2Zmc2V0LmxlZnQgKyBzY3JvbGxPZmZzZXQubGVm
dCwgbWF4V2lkdGgpKTsKKyAgICAgICAgICAgIHZhciBkcmFnWSA9IE1hdGgubWF4KDAsIE1hdGgu
bWluKGUucGFnZVkgLSBvZmZzZXQudG9wICsgc2Nyb2xsT2Zmc2V0LnRvcCwgbWF4SGVpZ2h0KSk7
CisKKyAgICAgICAgICAgIGlmIChvbm1vdmUpCisgICAgICAgICAgICAgICAgb25tb3ZlKGVsZW1l
bnQsIGRyYWdYLCBkcmFnWSk7IAorICAgICAgICB9IAorICAgIH0KKworICAgIGZ1bmN0aW9uIHN0
YXJ0KGUpIAorICAgIHsgCisgICAgICAgIHZhciByaWdodENsaWNrID0gZS53aGljaCA/IChlLndo
aWNoID09PSAzKSA6IChlLmJ1dHRvbiA9PT0gMik7CisKKyAgICAgICAgaWYgKCFyaWdodENsaWNr
ICYmICFkcmFnZ2luZykgeyAKKworICAgICAgICAgICAgaWYgKG9uc3RhcnQpCisgICAgICAgICAg
ICAgICAgb25zdGFydChlbGVtZW50LCBlKQorCisgICAgICAgICAgICBkcmFnZ2luZyA9IHRydWU7
IAorICAgICAgICAgICAgbWF4SGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBtYXhXaWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGg7CisKKyAgICAgICAgICAgIHNjcm9s
bE9mZnNldCA9IGVsZW1lbnQuc2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgICAgICBvZmZzZXQgPSBl
bGVtZW50LnRvdGFsT2Zmc2V0KCk7CisKKyAgICAgICAgICAgIGRvYy5hZGRFdmVudExpc3RlbmVy
KCJzZWxlY3RzdGFydCIsIHByZXZlbnQsIGZhbHNlKTsKKyAgICAgICAgICAgIGRvYy5hZGRFdmVu
dExpc3RlbmVyKCJkcmFnc3RhcnQiLCBwcmV2ZW50LCBmYWxzZSk7CisgICAgICAgICAgICBkb2Mu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgbW92ZSwgZmFsc2UpOworICAgICAgICAgICAg
ZG9jLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBzdG9wLCBmYWxzZSk7CisKKyAgICAgICAg
ICAgIHByZXZlbnQoZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdG9wKGUp
IAorICAgIHsgCisgICAgICAgIGlmIChkcmFnZ2luZykgeyAKKyAgICAgICAgICAgIGRvYy5yZW1v
dmVFdmVudExpc3RlbmVyKCJzZWxlY3RzdGFydCIsIHByZXZlbnQsIGZhbHNlKTsKKyAgICAgICAg
ICAgIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCBwcmV2ZW50LCBmYWxzZSk7
CisgICAgICAgICAgICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgbW92ZSwg
ZmFsc2UpOworICAgICAgICAgICAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBz
dG9wLCBmYWxzZSk7CisKKyAgICAgICAgICAgIGlmIChvbnN0b3ApCisgICAgICAgICAgICAgICAg
b25zdG9wKGVsZW1lbnQsIGUpOyAKKyAgICAgICAgfQorCisgICAgICAgIGRyYWdnaW5nID0gZmFs
c2U7IAorICAgIH0KKworICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwg
c3RhcnQsIGZhbHNlKTsKK307CisKK1dlYkluc3BlY3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUgPSB7
CisgICAgc2V0IGNvbG9yKGNvbG9yKQorICAgIHsKKyAgICAgICAgdmFyIHJnYmEgPSAoY29sb3Iu
cmdiYSB8fCBjb2xvci5yZ2IpLnNsaWNlKDApOworICAgICAgICAKKyAgICAgICAgaWYgKHJnYmEu
bGVuZ3RoID09PSAzKQorICAgICAgICAgICAgcmdiYVszXSA9IDE7CisgICAgICAgIAorICAgICAg
ICB0aGlzLmhzdiA9IFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5yZ2JhVG9IU1ZBKHJnYmFbMF0sIHJn
YmFbMV0sIHJnYmFbMl0sIHJnYmFbM10pOworICAgIH0sCisKKyAgICBnZXQgY29sb3IoKQorICAg
IHsKKyAgICAgICAgdmFyIHJnYmEgPSBXZWJJbnNwZWN0b3IuU3BlY3RydW0uaHN2YVRvUkdCQSh0
aGlzLmhzdlswXSwgdGhpcy5oc3ZbMV0sIHRoaXMuaHN2WzJdLCB0aGlzLmhzdlszXSk7CisgICAg
ICAgIHZhciBjb2xvcjsKKworICAgICAgICBpZiAocmdiYVszXSA9PT0gMSkKKyAgICAgICAgICAg
IGNvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0IocmdiYVswXSwgcmdiYVsxXSwgcmdi
YVsyXSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbG9yID0gV2ViSW5zcGVjdG9yLkNv
bG9yLmZyb21SR0JBKHJnYmFbMF0sIHJnYmFbMV0sIHJnYmFbMl0sIHJnYmFbM10pOworCisgICAg
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yKGNvbG9yLnRvU3RyaW5nKHRoaXMub3V0
cHV0Q29sb3JGb3JtYXQpKTsKKyAgICB9LAorCisgICAgZ2V0IG91dHB1dENvbG9yRm9ybWF0KCkK
KyAgICB7CisgICAgICAgIHZhciBjZiA9IFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5D
b2xvckZvcm1hdDsKKyAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX29yaWdpbmFsRm9ybWF0Owor
CisgICAgICAgIGlmICh0aGlzLmhzdlszXSA9PT0gMSkgeworICAgICAgICAgICAgLy8gU2ltcGxp
ZnkgdHJhbnNwYXJlbnQgZm9ybWF0cy4KKyAgICAgICAgICAgIGlmIChmb3JtYXQgPT09IGNmLlJH
QkEpCisgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuUkdCOworICAgICAgICAgICAgZWxzZSBp
ZiAoZm9ybWF0ID09PSBjZi5IU0xBKQorICAgICAgICAgICAgICAgIGZvcm1hdCA9IGNmLkhTTDsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIEV2ZXJ5dGhpbmcgZXhj
ZXB0IEhTTChBKSBzaG91bGQgcmV0dXJuZWQgYXMgUkdCQSBpZiB0cmFuc3BhcmVuY3kgaXMgaW52
b2x2ZWQuCisgICAgICAgICAgICBpZiAoZm9ybWF0ID09PSBjZi5IU0wgfHwgZm9ybWF0ID09PSBj
Zi5IU0xBKQorICAgICAgICAgICAgICAgIGZvcm1hdCA9IGNmLkhTTEE7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuUkdCQTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBmb3JtYXQ7CisgICAgfSwKKworICAgIGdldCBjb2xvckh1ZU9ubHkoKQorICAg
IHsKKyAgICAgICAgdmFyIHJnYmEgPSBXZWJJbnNwZWN0b3IuU3BlY3RydW0uaHN2YVRvUkdCQSh0
aGlzLmhzdlswXSwgMSwgMSwgMSk7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuQ29sb3Iu
ZnJvbVJHQkEocmdiYVswXSwgcmdiYVsxXSwgcmdiYVsyXSwgcmdiYVszXSk7CisgICAgfSwKKwor
ICAgIHNldCBkaXNwbGF5VGV4dCh0ZXh0KSAKKyAgICB7CisgICAgICAgIHRoaXMuX2Rpc3BsYXlF
bGVtZW50LnRleHRDb250ZW50ID0gdGV4dDsKKyAgICB9LAorCisgICAgX29uY2hhbmdlOiBmdW5j
dGlvbigpIAorICAgIHsKKyAgICAgICAgdGhpcy5fdXBkYXRlVUkoKTsKKyAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLkV2ZW50cy5Db2xv
ckNoYW5nZWQsIHRoaXMuY29sb3IpOworICAgIH0sCisKKyAgICBfdXBkYXRlSGVscGVyTG9jYXRp
b25zOiBmdW5jdGlvbigpIAorICAgIHsKKyAgICAgICAgdmFyIGggPSB0aGlzLmhzdlswXTsKKyAg
ICAgICAgdmFyIHMgPSB0aGlzLmhzdlsxXTsKKyAgICAgICAgdmFyIHYgPSB0aGlzLmhzdlsyXTsK
KworICAgICAgICAvLyBXaGVyZSB0byBzaG93IHRoZSBsaXR0bGUgY2lyY2xlIGluIHRoYXQgZGlz
cGxheXMgeW91ciBjdXJyZW50IHNlbGVjdGVkIGNvbG9yLgorICAgICAgICB2YXIgZHJhZ1ggPSBz
ICogdGhpcy5kcmFnV2lkdGg7CisgICAgICAgIHZhciBkcmFnWSA9IHRoaXMuZHJhZ0hlaWdodCAt
ICh2ICogdGhpcy5kcmFnSGVpZ2h0KTsKKworICAgICAgICBkcmFnWCA9IE1hdGgubWF4KC10aGlz
Ll9kcmFnSGVscGVyRWxlbWVudEhlaWdodCwgCisgICAgICAgICAgICAgICAgICAgICAgICBNYXRo
Lm1pbih0aGlzLmRyYWdXaWR0aCAtIHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50SGVpZ2h0LCBkcmFn
WCAtIHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50SGVpZ2h0KSk7CisgICAgICAgIGRyYWdZID0gTWF0
aC5tYXgoLXRoaXMuX2RyYWdIZWxwZXJFbGVtZW50SGVpZ2h0LCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIE1hdGgubWluKHRoaXMuZHJhZ0hlaWdodCAtIHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50
SGVpZ2h0LCBkcmFnWSAtIHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50SGVpZ2h0KSk7CisKKyAgICAg
ICAgdGhpcy5fZHJhZ0hlbHBlckVsZW1lbnQucG9zaXRpb25BdChkcmFnWCwgZHJhZ1kpOworCisg
ICAgICAgIC8vIFdoZXJlIHRvIHNob3cgdGhlIGJhciB0aGF0IGRpc3BsYXlzIHlvdXIgY3VycmVu
dCBzZWxlY3RlZCBodWUuCisgICAgICAgIHZhciBzbGlkZVkgPSAoaCAqIHRoaXMuc2xpZGVIZWln
aHQpIC0gdGhpcy5zbGlkZUhlbHBlckhlaWdodDsKKyAgICAgICAgdGhpcy5zbGlkZUhlbHBlci5z
dHlsZS50b3AgPSBzbGlkZVkgKyAicHgiOworCisgICAgICAgIHRoaXMuX2FscGhhRWxlbWVudC52
YWx1ZSA9IHRoaXMuaHN2WzNdICogMTAwOworICAgIH0sCisKKyAgICBfdXBkYXRlVUk6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3VwZGF0ZUhlbHBlckxvY2F0aW9ucygpOworCisg
ICAgICAgIHZhciByZ2IgPSAodGhpcy5jb2xvci5yZ2JhIHx8IHRoaXMuY29sb3IucmdiKS5zbGlj
ZSgwKTsKKworICAgICAgICBpZiAocmdiLmxlbmd0aCA9PT0gMykKKyAgICAgICAgICAgIHJnYlsz
XSA9IDE7CisKKyAgICAgICAgdmFyIHJnYkh1ZU9ubHkgPSB0aGlzLmNvbG9ySHVlT25seS5yZ2I7
CisKKyAgICAgICAgdmFyIGZsYXRDb2xvciA9ICJyZ2IoIiArIHJnYkh1ZU9ubHlbMF0gKyAiLCAi
ICsgcmdiSHVlT25seVsxXSArICIsICIgKyByZ2JIdWVPbmx5WzJdICsgIikiOworICAgICAgICB2
YXIgZnVsbENvbG9yID0gInJnYmEoIiArIHJnYlswXSArICIsICIgKyByZ2JbMV0gKyAiLCAiICsg
cmdiWzJdICsgIiwgIiArIHJnYlszXSArICIpIjsKKworICAgICAgICB0aGlzLl9kcmFnZ2VyRWxl
bWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBmbGF0Q29sb3I7CisgICAgICAgIHRoaXMuX3N3
YXRjaElubmVyRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBmdWxsQ29sb3I7CisKKyAg
ICAgICAgdGhpcy5fYWxwaGFFbGVtZW50LnZhbHVlID0gdGhpcy5oc3ZbM10gKiAxMDA7CisgICAg
fSwKKworICAgIHRvZ2dsZTogZnVuY3Rpb24oZWxlbWVudCwgY29sb3IsIGZvcm1hdCkKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLl9pc1Nob3duKSAKKyAgICAgICAgICAgIHRoaXMuaGlkZSgpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLnNob3coZWxlbWVudCwgY29sb3IsIGZvcm1h
dCk7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2hvd247CisgICAgfSwKKworICAgIHNob3c6
IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbG9yLCBmb3JtYXQpCisgICAgeworICAgICAgICBpZiAodGhp
cy5faXNTaG93bikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9pc1Nob3du
ID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5yZXBvc2l0aW9uKGVsZW1lbnQpOworCisgICAgICAgIGRv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2hpZGVQcm94eSk7Cisg
ICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcy5faGlkZVByb3h5KTsK
KworICAgICAgICB0aGlzLnNsaWRlSGVpZ2h0ID0gdGhpcy5fc2xpZGVyRWxlbWVudC5vZmZzZXRI
ZWlnaHQ7CisgICAgICAgIHRoaXMuZHJhZ1dpZHRoID0gdGhpcy5fZHJhZ2dlckVsZW1lbnQub2Zm
c2V0V2lkdGg7CisgICAgICAgIHRoaXMuZHJhZ0hlaWdodCA9IHRoaXMuX2RyYWdnZXJFbGVtZW50
Lm9mZnNldEhlaWdodDsKKyAgICAgICAgdGhpcy5fZHJhZ0hlbHBlckVsZW1lbnRIZWlnaHQgPSB0
aGlzLl9kcmFnSGVscGVyRWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICB0aGlzLnNs
aWRlSGVscGVySGVpZ2h0ID0gdGhpcy5zbGlkZUhlbHBlci5vZmZzZXRIZWlnaHQgLyAyOworCisg
ICAgICAgIHRoaXMuY29sb3IgPSBjb2xvcjsKKyAgICAgICAgdGhpcy5fb3JpZ2luYWxGb3JtYXQg
PSBmb3JtYXQgfHwgY29sb3IuZm9ybWF0OworCisgICAgICAgIHRoaXMuX3VwZGF0ZVVJKCk7Cisg
ICAgfSwKKworICAgIHJlcG9zaXRpb246IGZ1bmN0aW9uKGVsZW1lbnQpIAorICAgIHsKKyAgICAg
ICAgdGhpcy5fcG9wb3Zlci5zaG93KHRoaXMuX2NvbnRhaW5lckVsZW1lbnQsIGVsZW1lbnQpOwor
ICAgIH0sCisKKyAgICBoaWRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBkZWxldGUgdGhp
cy5faXNTaG93bjsKKyAgICAgICAgdGhpcy5fcG9wb3Zlci5oaWRlKCk7CisKKyAgICAgICAgZG9j
dW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5faGlkZVByb3h5KTsK
KyAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9oaWRlUHJv
eHkpOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5TcGVjdHJ1bS5FdmVudHMuSGlkZGVuKTsKKworICAgICAgICAvLyBPbmx5IHdhbnQgdG8gYWxs
b3cgb25lIGluc3RhbmNlIHRvIGJlIG9wZW4gYXQgYSB0aW1lLCBzbyBjbGVhciBvdXQgYW55IAor
ICAgICAgICAvLyBleGlzdGluZyBldmVudCBsaXN0ZW5lcnMuCisgICAgICAgIHRoaXMucmVtb3Zl
QWxsTGlzdGVuZXJzKCk7CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5l
LmpzCmluZGV4IDNmOTU1YzEuLjQwMzc0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtODksNiArODks
OSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUgPSBmdW5jdGlvbihjb21wdXRlZFN0
eWxlUGFuZSkKICAgICB0aGlzLl9zZWN0aW9uc0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwogICAgIHRoaXMuYm9keUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2Vj
dGlvbnNDb250YWluZXIpOwogCisgICAgaWYgKFByZWZlcmVuY2VzLnVzZVNwZWN0cnVtKQorICAg
ICAgICB0aGlzLl9zcGVjdHJ1bSA9IG5ldyBXZWJJbnNwZWN0b3IuU3BlY3RydW0oKTsKKwogICAg
IFdlYkluc3BlY3Rvci5jc3NNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NT
dHlsZU1vZGVsLkV2ZW50cy5TdHlsZVNoZWV0Q2hhbmdlZCwgdGhpcy5fc3R5bGVTaGVldE9yTWVk
aWFRdWVyeVJlc3VsdENoYW5nZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5NZWRpYVF1
ZXJ5UmVzdWx0Q2hhbmdlZCwgdGhpcy5fc3R5bGVTaGVldE9yTWVkaWFRdWVyeVJlc3VsdENoYW5n
ZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuQXR0ck1vZGlmaWVkLCB0aGlzLl9hdHRyaWJ1dGVz
TW9kaWZpZWQsIHRoaXMpOwpAQCAtMTYwMSwyOCArMTYwNCw5MyBAQCBXZWJJbnNwZWN0b3IuU3R5
bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpOwogICAgICAgICAgICAgICAgIH0K
IAorICAgICAgICAgICAgICAgIHZhciBmb3JtYXQgPSBnZXRGb3JtYXQoKTsKKyAgICAgICAgICAg
ICAgICB2YXIgaGFzQ29sb3JwaWNrZXIgPSBzZWxmLl9wYXJlbnRQYW5lOworICAgICAgICAgICAg
ICAgIHZhciBzcGVjdHJ1bSA9IGhhc0NvbG9ycGlja2VyID8gc2VsZi5fcGFyZW50UGFuZS5fc3Bl
Y3RydW0gOiBudWxsOworCiAgICAgICAgICAgICAgICAgdmFyIHN3YXRjaEVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVu
dC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gY2hhbmdlIGNvbG9yIGZv
cm1hdCIpOwotICAgICAgICAgICAgICAgIHN3YXRjaEVsZW1lbnQuY2xhc3NOYW1lID0gInN3YXRj
aCI7Ci0gICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgiYmFj
a2dyb3VuZC1jb2xvciIsIHRleHQpOwotCi0gICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGNoYW5nZUNvbG9yRGlzcGxheSwgZmFsc2UpOwotICAg
ICAgICAgICAgICAgIHN3YXRjaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLCBm
dW5jdGlvbihldmVudCkgeyBldmVudC5zdG9wUHJvcGFnYXRpb24oKSB9LCBmYWxzZSk7Ci0KLSAg
ICAgICAgICAgICAgICB2YXIgZm9ybWF0OwotICAgICAgICAgICAgICAgIHZhciBmb3JtYXRTZXR0
aW5nID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNvbG9yRm9ybWF0LmdldCgpOwotICAgICAgICAg
ICAgICAgIGlmIChmb3JtYXRTZXR0aW5nID09PSBjZi5PcmlnaW5hbCkKLSAgICAgICAgICAgICAg
ICAgICAgZm9ybWF0ID0gY2YuT3JpZ2luYWw7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoY29s
b3Iubmlja25hbWUpCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IGNmLk5pY2tuYW1lOwot
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvcm1hdFNldHRpbmcgPT09IGNmLlJHQikKLSAgICAg
ICAgICAgICAgICAgICAgZm9ybWF0ID0gKGNvbG9yLnNpbXBsZSA/IGNmLlJHQiA6IGNmLlJHQkEp
OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvcm1hdFNldHRpbmcgPT09IGNmLkhTTCkKLSAg
ICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gKGNvbG9yLnNpbXBsZSA/IGNmLkhTTCA6IGNmLkhT
TEEpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbG9yLnNpbXBsZSkKLSAgICAgICAgICAg
ICAgICAgICAgZm9ybWF0ID0gKGNvbG9yLmhhc1Nob3J0SGV4KCkgPyBjZi5TaG9ydEhFWCA6IGNm
LkhFWCk7CisgICAgICAgICAgICAgICAgdmFyIHN3YXRjaElubmVyRWxlbWVudCA9IHN3YXRjaEVs
ZW1lbnQuY3JlYXRlQ2hpbGQoInNwYW4iLCAic3dhdGNoLWlubmVyIik7CisgICAgICAgICAgICAg
ICAgaWYgKGhhc0NvbG9ycGlja2VyKQorICAgICAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50
LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbGljayB0byBvcGVuIGEgY29sb3JwaWNr
ZXIiKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9
IGNmLlJHQkE7CisgICAgICAgICAgICAgICAgICAgIHN3YXRjaEVsZW1lbnQudGl0bGUgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkNsaWNrIHRvIGNoYW5nZSBjb2xvciBmb3JtYXQiKTsKKworICAg
ICAgICAgICAgICAgIHN3YXRjaEVsZW1lbnQuY2xhc3NOYW1lID0gInN3YXRjaCI7CisKKyAgICAg
ICAgICAgICAgICBzd2F0Y2hFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHN0
b3BQcm9wYWdhdGlvbiwgZmFsc2UpOworICAgICAgICAgICAgICAgIHN3YXRjaEVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigiY2xpY2siLCBzd2F0Y2hDbGljaywgZmFsc2UpOworICAgICAgICAgICAg
ICAgIHN3YXRjaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLCBzdG9wUHJvcGFn
YXRpb24sIGZhbHNlKTsKKworICAgICAgICAgICAgICAgIHN3YXRjaElubmVyRWxlbWVudC5zdHls
ZS5iYWNrZ3JvdW5kQ29sb3IgPSB0ZXh0OworCisgICAgICAgICAgICAgICAgdmFyIHNjcm9sbGVy
RWxlbWVudCA9IGhhc0NvbG9ycGlja2VyID8gc2VsZi5fcGFyZW50UGFuZS5fY29tcHV0ZWRTdHls
ZVBhbmUuZWxlbWVudC5wYXJlbnRFbGVtZW50IDogbnVsbDsKKworICAgICAgICAgICAgICAgIGZ1
bmN0aW9uIHNwZWN0cnVtQ2hhbmdlKGUpIAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgY29sb3IgPSBlLmRhdGE7CisKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNvbG9y
U3RyaW5nID0gY29sb3IudG9TdHJpbmcoKTsKKworICAgICAgICAgICAgICAgICAgICBjb2xvclZh
bHVlRWxlbWVudC50ZXh0Q29udGVudCA9IGNvbG9yU3RyaW5nOworICAgICAgICAgICAgICAgICAg
ICBzcGVjdHJ1bS5kaXNwbGF5VGV4dCA9IGNvbG9yU3RyaW5nOworICAgICAgICAgICAgICAgICAg
ICBzd2F0Y2hJbm5lckVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gY29sb3JTdHJpbmc7
CisKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseVN0eWxlVGV4dChuYW1lRWxlbWVudC50
ZXh0Q29udGVudCArICI6ICIgKyB2YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZ1bmN0aW9u
IHNwZWN0cnVtSGlkZSgpIAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
c2Nyb2xsZXJFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHJlcG9zaXRpb25T
cGVjdHJ1bSwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBzZWxmLmFwcGx5U3R5bGVUZXh0
KG5hbWVFbGVtZW50LnRleHRDb250ZW50ICsgIjogIiArIHZhbHVlRWxlbWVudC50ZXh0Q29udGVu
dCwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpOworCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzZWxm
Ll9wYXJlbnRQYW5lLl9pc0VkaXRpbmdTdHlsZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBmdW5jdGlvbiByZXBvc2l0aW9uU3BlY3RydW0oKSAKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHNwZWN0cnVtLnJlcG9zaXRpb24oc3dhdGNoRWxlbWVu
dCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gc3dhdGNo
Q2xpY2soZSkgCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBBbHQg
KyBjbGljayB0b2dnbGVzIGNvbG9yIGZvcm1hdHMuCisgICAgICAgICAgICAgICAgICAgIC8vIENs
aWNrIG9wZW5zIGNvbG9ycGlja2VyLCBvbmx5IGlmIHRoZSBlbGVtZW50IGlzIG5vdCBpbiBjb21w
dXRlZCBzdHlsZXMgc2VjdGlvbi4KKworICAgICAgICAgICAgICAgICAgICBpZiAoIXNwZWN0cnVt
IHx8IGUuYWx0S2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlQ29sb3JEaXNwbGF5
KGUpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChoYXNDb2xvcnBpY2tlcikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIGlzU2hvd24gPSBzcGVjdHJ1bS50b2dnbGUoc3dhdGNo
RWxlbWVudCwgY29sb3IsIGZvcm1hdCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
c1Nob3duKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN0cnVtLmRpc3BsYXlU
ZXh0ID0gY29sb3IudG9TdHJpbmcoZm9ybWF0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fcGFyZW50UGFuZS5faXNFZGl0aW5nU3R5bGUgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzcGVjdHJ1bS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5T
cGVjdHJ1bS5FdmVudHMuQ29sb3JDaGFuZ2VkLCBzcGVjdHJ1bUNoYW5nZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNwZWN0cnVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlNwZWN0cnVtLkV2ZW50cy5IaWRkZW4sIHNwZWN0cnVtSGlkZSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2Nyb2xsZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIs
IHJlcG9zaXRpb25TcGVjdHJ1bSwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gZ2V0Rm9ybWF0KCkgCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICB2YXIgZm9ybWF0OworICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybWF0U2V0dGlu
ZyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb2xvckZvcm1hdC5nZXQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGZvcm1hdFNldHRpbmcgPT09IGNmLk9yaWdpbmFsKQorICAgICAgICAgICAg
ICAgICAgICAgICAgZm9ybWF0ID0gY2YuT3JpZ2luYWw7CisgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGNvbG9yLm5pY2tuYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0g
Y2YuTmlja25hbWU7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvcm1hdFNldHRpbmcg
PT09IGNmLlJHQikKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IChjb2xvci5zaW1w
bGUgPyBjZi5SR0IgOiBjZi5SR0JBKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9y
bWF0U2V0dGluZyA9PT0gY2YuSFNMKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0g
KGNvbG9yLnNpbXBsZSA/IGNmLkhTTCA6IGNmLkhTTEEpOworICAgICAgICAgICAgICAgICAgICBl
bHNlIGlmIChjb2xvci5zaW1wbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAo
Y29sb3IuaGFzU2hvcnRIZXgoKSA/IGNmLlNob3J0SEVYIDogY2YuSEVYKTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuUkdCQTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9y
bWF0OworICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHZhciBjb2xvclZhbHVl
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgICAgICAg
ICBjb2xvclZhbHVlRWxlbWVudC50ZXh0Q29udGVudCA9IGNvbG9yLnRvU3RyaW5nKGZvcm1hdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5x
cmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXgg
NjY0MjVjNy4uOWQ4NWQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvV2ViS2l0LnFyYwpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgPGZpbGU+U291cmNlSFRNTFRv
a2VuaXplci5qczwvZmlsZT4KICAgICA8ZmlsZT5Tb3VyY2VKYXZhU2NyaXB0VG9rZW5pemVyLmpz
PC9maWxlPgogICAgIDxmaWxlPlNvdXJjZVRva2VuaXplci5qczwvZmlsZT4KKyAgICA8ZmlsZT5T
cGVjdHJ1bS5qczwvZmlsZT4KICAgICA8ZmlsZT5TcGxpdFZpZXcuanM8L2ZpbGU+CiAgICAgPGZp
bGU+U3RhdHVzQmFyQnV0dG9uLmpzPC9maWxlPgogICAgIDxmaWxlPlN0eWxlc1NpZGViYXJQYW5l
LmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuY3NzCmluZGV4IGUwNWYwNjUuLjAxMTc5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTE0NDUsNiArMTQ0NSwxMyBA
QCBsaS5lZGl0aW5nIC5zd2F0Y2gsIGxpLmVkaXRpbmcgLmVuYWJsZWQtYnV0dG9uLCAgbGkuZWRp
dGluZy1zdWItcGFydCAuZGVsZXRlLWJ1dAogICAgIHdpZHRoOiAxZW07CiAgICAgaGVpZ2h0OiAx
ZW07CiAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjgsIDEyOCwgMTI4LCAwLjYpOworICAg
IGJhY2tncm91bmQtaW1hZ2U6IHVybChJbWFnZXMvY2hlY2tlci5wbmcpOworfQorCisuc3dhdGNo
LWlubmVyIHsgCisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIGRpc3Bs
YXk6IGJsb2NrOwogfQogCiAuc3dhdGNoOmhvdmVyIHsKQEAgLTI2MzksMyArMjY0NiwxMDAgQEAg
Ym9keS5wbGF0Zm9ybS1tYWMgI2RyYXdlci1zdGF0dXMtYmFyIC5zZWFyY2gtc3RhdHVzLWJhci1w
cm9ncmVzcyB7CiAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICBib3JkZXItd2lk
dGg6IDAgMCAxMXB4IDA7CiB9CisKKy8qIGh0dHBzOi8vZ2l0aHViLmNvbS9iZ3JpbnMvc3BlY3Ry
dW0gKi8KKy5zcGVjdHJ1bS1jb250YWluZXIgeyAKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7IAor
ICAgIHRvcDogMDsgCisgICAgbGVmdDogMDsgCisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgIGJhY2tncm91bmQ6IHJnYmEoMjMwLCAyMzAsIDIzMCwgMSkgIWltcG9ydGFudDsKKyAgICBi
b3JkZXI6IDFweCBzb2xpZCAjNjQ2NDY0OworICAgIHBhZGRpbmc6IDEwcHg7CisgICAgd2lkdGg6
IDIwMHB4OworICAgIHotaW5kZXg6IDEwOworfQorCisuc3BlY3RydW0tdG9wIHsKKyAgICBwb3Np
dGlvbjogcmVsYXRpdmU7IAorICAgIHdpZHRoOiAxMDAlOworICAgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKK30KKworLnNwZWN0cnVtLWNvbG9yIHsgCisgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIGJvdHRvbTogMDsKKyAgICByaWdodDogMjAl
OworfQorCisuc3BlY3RydW0taHVlIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9w
OiAwOworICAgIHJpZ2h0OiAwOworICAgIGJvdHRvbTogMDsKKyAgICBsZWZ0OiA4MyU7Cit9CisK
Ky5zcGVjdHJ1bS1maWxsIHsgCisgICAgLyogU2FtZSBhcyBzcGVjdHJ1bS1jb2xvciB3aWR0aCB0
byBmb3JjZSBhc3BlY3QgcmF0aW8uICovCisgICAgbWFyZ2luLXRvcDogODAlOyAKK30KKworLnNw
ZWN0cnVtLXJhbmdlLWNvbnRhaW5lciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHBh
ZGRpbmctdG9wOiAxMHB4OworfQorCisuc3BlY3RydW0tcmFuZ2UtY29udGFpbmVyICogeworICAg
IGZvbnQtc2l6ZTogOXB4OworICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cit9CisKKy5zcGVj
dHJ1bS1yYW5nZS1jb250YWluZXIgbGFiZWwgeworICAgIHdpZHRoOiAzMnB4OworICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKK30KKworLnNwZWN0cnVtLXJhbmdlLWNvbnRhaW5lciBpbnB1dCB7
IAorICAgIHdpZHRoOiAxMzBweDsgCit9CisKKy5zd2F0Y2gsIC5zcGVjdHJ1bS1kcmFnZ2VyLCAu
c3BlY3RydW0tc2xpZGVyIHsgCisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKK30KKwor
LnNwZWN0cnVtLXNhdCB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3Jh
ZGllbnQobGVmdCwgd2hpdGUsIHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpOworfQorCisuc3BlY3Ry
dW0tdmFsIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChi
b3R0b20sIGJsYWNrLCByZ2JhKDIwNCwgMTU0LCAxMjksIDApKTsKK30KKworLnNwZWN0cnVtLWh1
ZSB7CisgICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZmYwMDAw
IDAlLCAjZmZmZjAwIDE3JSwgIzAwZmYwMCAzMyUsICMwMGZmZmYgNTAlLCAjMDAwMGZmIDY3JSwg
I2ZmMDBmZiA4MyUsICNmZjAwMDAgMTAwJSk7Cit9CisKKy5zcGVjdHJ1bS1kcmFnZ2VyIHsKKyAg
ICBib3JkZXItcmFkaXVzOiA1cHg7IAorICAgIGhlaWdodDogNXB4OyAKKyAgICB3aWR0aDogNXB4
OyAKKyAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDNweDsKKyAgICBjdXJzb3I6IHBvaW50ZXI7Cisg
ICAgcG9zaXRpb246IGFic29sdXRlOyAKKyAgICB0b3A6IDA7IAorICAgIGxlZnQ6IDA7Cit9CisK
Ky5zcGVjdHJ1bS1zbGlkZXIgeyAKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7IAorICAgIHRvcDog
MDsgCisgICAgY3Vyc29yOiBwb2ludGVyOworICAgIGhlaWdodDogNXB4OyAKKyAgICB3aWR0aDog
MTEwJTsKKyAgICBtYXJnaW4tbGVmdDogLTUlOworICAgIGJhY2tncm91bmQ6IHdoaXRlOyAKKyAg
ICBvcGFjaXR5OiAuODsgCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCA1MGU5MTlhLi44YjU3ZDAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTgyLDYg
KzgyLDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJBcHBsaWNhdGlvbkNhY2hlTW9kZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9IkFwcGxpY2F0aW9uQ2FjaGVJdGVtc1ZpZXcuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNjcmlwdC5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU3BlY3Ry
dW0uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
IlNpZGViYXJQYW5lLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJFbGVtZW50c1RyZWVPdXRsaW5lLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJET01QcmVzZW50YXRpb25VdGlscy5qcyI+PC9z
Y3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126769</attachid>
            <date>2012-02-13 07:29:03 -0800</date>
            <delta_ts>2012-02-15 04:48:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71262-20120213092901.patch</filename>
            <type>text/plain</type>
            <size>29875</size>
            <attacher name="Brian Grinstead">briangrinstead</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzcwYWE3MmQyODkyNThl
MDllMDcxNWZkMWNiZTQxYzI2ZGRjM2UxYy4uNTZlMjgwODFkOTk3Zjg3NDNkMGNhZDU4NjUwNjc5
M2QzOWI4ZDFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTAyLTEzICBCcmlh
biBHcmluc3RlYWQgIDxicmlhbmdyaW5zdGVhZEBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogQWRkIGNvbG9ycGlja2VyIGZ1bmN0aW9uYWxpdHkgdG8gY29sb3Igc3dhdGNoZXMg
aW4gU3R5bGVzIFNpZGViYXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcxMjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICog
V2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9TcGVjdHJ1bS5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuU3BlY3RydW0uaHVlRHJhZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uY29s
b3JEcmFnKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5hbHBoYURyYWcpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVj
dHJ1bS5oc3ZhVG9SR0JBKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5yZ2JhVG9I
U1ZBKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUucHJldmVudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxlLm1vdmUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLmRyYWdnYWJsZS5zdGFydCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxlLnN0b3ApOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNwZWN0cnVtLmRyYWdnYWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJv
dG90eXBlLnNldCBjb2xvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90
eXBlLmdldCBjb2xvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJvdG90eXBl
LmdldCBvdXRwdXRDb2xvckZvcm1hdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0u
cHJvdG90eXBlLmdldCBjb2xvckh1ZU9ubHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0
cnVtLnByb3RvdHlwZS5zZXQgZGlzcGxheVRleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNw
ZWN0cnVtLnByb3RvdHlwZS5fb25jaGFuZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0
cnVtLnByb3RvdHlwZS5fdXBkYXRlSGVscGVyTG9jYXRpb25zKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TcGVjdHJ1bS5wcm90b3R5cGUuX3VwZGF0ZVVJKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TcGVjdHJ1bS5wcm90b3R5cGUudG9nZ2xlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGVj
dHJ1bS5wcm90b3R5cGUuc2hvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BlY3RydW0ucHJv
dG90eXBlLnJlcG9zaXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnByb3Rv
dHlwZS5oaWRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQ
YW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLnVwZGF0
ZVRpdGxlLik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAgKC5zd2F0
Y2gpOgorICAgICAgICAoLnN3YXRjaC1pbm5lcik6CisgICAgICAgICguc3BlY3RydW0tY29udGFp
bmVyKToKKyAgICAgICAgKC5zcGVjdHJ1bS10b3ApOgorICAgICAgICAoLnNwZWN0cnVtLWNvbG9y
KToKKyAgICAgICAgKC5zcGVjdHJ1bS1odWUpOgorICAgICAgICAoLnNwZWN0cnVtLWZpbGwpOgor
ICAgICAgICAoLnNwZWN0cnVtLXJhbmdlLWNvbnRhaW5lcik6CisgICAgICAgICguc3BlY3RydW0t
cmFuZ2UtY29udGFpbmVyICopOgorICAgICAgICAoLnNwZWN0cnVtLXJhbmdlLWNvbnRhaW5lciBs
YWJlbCk6CisgICAgICAgICguc3BlY3RydW0tcmFuZ2UtY29udGFpbmVyIGlucHV0KToKKyAgICAg
ICAgKC5zd2F0Y2gsIC5zcGVjdHJ1bS1kcmFnZ2VyLCAuc3BlY3RydW0tc2xpZGVyKToKKyAgICAg
ICAgKC5zcGVjdHJ1bS1zYXQpOgorICAgICAgICAoLnNwZWN0cnVtLXZhbCk6CisgICAgICAgICgu
c3BlY3RydW0tZHJhZ2dlcik6CisgICAgICAgICguc3BlY3RydW0tc2xpZGVyKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorCiAyMDEyLTAyLTEwICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1RleHRQcm9tcHRdIFRBQiBzaG91bGQgY29tcGxldGUgc3VnZ2VzdGlvbnMgdXAgdG8g
dGhlaXIgY29tbW9uIHByZWZpeCBpbiBDb25zb2xlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9Fbmds
aXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggMTIxMzc4ODI1NzQyMTk3ZTY5ZWEx
MjU3MDE3ZjYzMjY3NzgxMDdjZC4uYTE0NGUwYmNkZWY0ZjRjNGE0ZTc1NzI5MmZiMWQ0OGY5M2Iz
ZWM5NyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1MzUKemNtZUNXJlRgPTwzK01sVFdl
a1o3TUdPailtPXJmXkZQQ0N3UCphJXZRQ2VqM09EU3pJZCF4OXteIXJrYlk/SGdDCnpBcCMmdDcj
aytKYEwqPE03OUl1fTF5elAoMjNaOUtoTFh0KCt7R3RmUnEjZD97SUpffWJFMlpCS0dAezcwaChh
Qwp6RjtadThlKm5qMS1hdWc8cHpUVHd1P3p8ZndtPXNKRGo+Xm1aVnFJKDB9SiVfJVl4fl5VY0px
P2B9O0xHO1RCS2MKenhJPDt+XmN7aS1rPEEtLVdTVD5DPHg0UkV7V2hgRGgkRTlCazBCbDhRTmJu
PTFaU2hJJmc5KTZNOFMkTGVeM1V+Cno2Qn42VnQ5fSMpdiNtY1dnNlFkcW9RITZocispbHVJWHpF
e1FCXiZXQSV+JVdBcDtuU1J6UD5kVEBQZlQkVmA1NAp6UiRuPVhBcy1tbD08MVN6cUh2a1g0bzNQ
X25HREdjKitBMXVmSERkfFQpPmJEYmd9fV9MPE9KPk9telZSTHxyUC0KUk9re2hWZnVAbVRmOzlz
ZDB7fnF4ZzZJR00KCmRlbHRhIDMxNQp6Y21jYWBsY25vQTMpakVAM31wPDczYEduSWxRJUxkWnEh
O1gjaVhEJXhsbUdjQChVPyNBYW5YZ0RNc1ZUVUQ2O24KelNReD90M3ZZZlVlVm0weUw1NHc8cDsk
cWRMNGwhVV4yU31fbGRtWHZxWUEjP1pNciFAKE5tdlVMNSpTWm5nQzZaCnpRSGNTamxYKEojZDRO
Sm40NiM3SHdtPXZCNF5WKjBaRWd4PXcqIz5zXzZiaigqVXRATkdFVUluZTU9MS1nQTtEIQp6PFBB
R2lDUXNXVGghRU1sVk1uR3BOTzU7USpkdkE9eTFYRlk2KkZXcTxUMGNKQ0hSe30qPHRLSjh7TnFR
dE5BOXMKcGBAanglK29jYzZBaVkzTWxUfChuZ04zWDxEdVJSKE8/MFJDYTU4ZGpwN1FhbEI+PmYw
VDt+NykKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNzhhODVjMGQzMWUwOTFkODlmYmM4MGIxMjk2MjM3
NWU1NWFjM2U3OS4uNGY3ZWEzZWMwN2E1Y2M5Njg1OTY4ODdhMWYwYzViMjEzZGM5MGI1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtNjE4Myw2ICs2MTgzLDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL1NvdXJjZUhUTUxUb2tlbml6ZXIuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvU291cmNlSmF2YVNjcmlwdFRva2VuaXplci5qcycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VUb2tlbml6ZXIuanMnLAorICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvU3BlY3RydW0uanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvU3BsaXRWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL1N0YXR1c0JhckJ1dHRvbi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9TdHlsZXNTaWRlYmFyUGFuZS5qcycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IGQzZWM3N2E4YWZhYjY4MzA5MWI4ZWYwOTcxMjMzMWUwNjk5
Njg1NjIuLjc0MDdlMDFlZjgyZDFlZWY2NzVmY2JjNThkNTEyYjYyNzIwZmVmOTkgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03MjczMyw2ICs3
MjczMywxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxTcGVjdHJ1bS5qcyIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1l
bmRcc3BsaXRWaWV3LmNzcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IDY4YmMzOGIzYTJkYmMyOTdk
YzQ5YWVhNGI4YTU5NmIxOTAxOWFiNTkuLmJmMDc1NTFkZDg5OGQ0NWM0NWNmMzcwNTllYzFhMjM0
NWZjYWNjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2V0dGluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0
aW5ncy5qcwpAQCAtNDQsNyArNDQsOCBAQCB2YXIgUHJlZmVyZW5jZXMgPSB7CiAgICAgZXhwb3Nl
V29ya2Vyc0luc3BlY3Rpb246IGZhbHNlLAogICAgIGFwcGxpY2F0aW9uVGl0bGU6ICJXZWIgSW5z
cGVjdG9yIC0gJXMiLAogICAgIHNob3dIZWFwU25hcHNob3RPYmplY3RzSGlkZGVuUHJvcGVydGll
czogZmFsc2UsCi0gICAgc2hvd0RvY2tUb1JpZ2h0OiBmYWxzZQorICAgIHNob3dEb2NrVG9SaWdo
dDogZmFsc2UsCisgICAgdXNlU3BlY3RydW06IHRydWUKIH0KIAogdmFyIENhcGFiaWxpdGllcyA9
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3BlY3Ry
dW0uanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NwZWN0cnVtLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZjMmM3YTdiMGFmYWVmZTBhNzU3YWNkMTNjZjlhMWNmZjZkM2Y3NGMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NwZWN0cnVt
LmpzCkBAIC0wLDAgKzEsNDA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEJyaWFuIEdy
aW5zdGVhZCBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5TcGVjdHJ1bSA9IGZ1bmN0
aW9uKGNvbnRhaW5lcikKK3sKKyAgICB0aGlzLl9wb3BvdmVyID0gbmV3IFdlYkluc3BlY3Rvci5Q
b3BvdmVyKCk7CisgICAgdGhpcy5fcG9wb3Zlci5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNlZG93biIsIHN0b3BQcm9wYWdhdGlvbiwgZmFsc2UpOworCisgICAgdGhpcy5fY29udGFpbmVy
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRoaXMuX2NvbnRh
aW5lckVsZW1lbnQuY2xhc3NOYW1lID0gInNwZWN0cnVtLWNvbnRhaW5lciI7CisKKyAgICB2YXIg
dG9wRWxlbWVudCA9IHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJz
cGVjdHJ1bS10b3AiKTsKKyAgICB0b3BFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3Ry
dW0tZmlsbCIpOworCisgICAgdmFyIHRvcElubmVyRWxlbWVudCA9IHRvcEVsZW1lbnQuY3JlYXRl
Q2hpbGQoImRpdiIsICJzcGVjdHJ1bS10b3AtaW5uZXIgZmlsbCIpOworICAgIHRoaXMuX2RyYWdn
ZXJFbGVtZW50ID0gdG9wSW5uZXJFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0t
Y29sb3IiKTsKKyAgICB0aGlzLl9kcmFnSGVscGVyRWxlbWVudCA9IHRoaXMuX2RyYWdnZXJFbGVt
ZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0tc2F0IGZpbGwiKS5jcmVhdGVDaGlsZCgi
ZGl2IiwgInNwZWN0cnVtLXZhbCBmaWxsIikuY3JlYXRlQ2hpbGQoImRpdiIsICJzcGVjdHJ1bS1k
cmFnZ2VyIik7CisKKyAgICB0aGlzLl9zbGlkZXJFbGVtZW50ID0gdG9wSW5uZXJFbGVtZW50LmNy
ZWF0ZUNoaWxkKCJkaXYiLCAic3BlY3RydW0taHVlIik7CisgICAgdGhpcy5zbGlkZUhlbHBlciA9
IHRoaXMuX3NsaWRlckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJzcGVjdHJ1bS1zbGlkZXIi
KTsKKworICAgIHZhciByYW5nZUNvbnRhaW5lciA9IHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuY3Jl
YXRlQ2hpbGQoImRpdiIsICJzcGVjdHJ1bS1yYW5nZS1jb250YWluZXIiKTsKKyAgICB2YXIgYWxw
aGFMYWJlbCA9IHJhbmdlQ29udGFpbmVyLmNyZWF0ZUNoaWxkKCJsYWJlbCIpOworICAgIGFscGhh
TGFiZWwudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoImFscGhhOiAiKTsKKwor
ICAgIHRoaXMuX2FscGhhRWxlbWVudCA9IHJhbmdlQ29udGFpbmVyLmNyZWF0ZUNoaWxkKCJpbnB1
dCIsICJzcGVjdHJ1bS1yYW5nZSIpOworICAgIHRoaXMuX2FscGhhRWxlbWVudC5zZXRBdHRyaWJ1
dGUoInR5cGUiLCAicmFuZ2UiKTsKKyAgICB0aGlzLl9hbHBoYUVsZW1lbnQuc2V0QXR0cmlidXRl
KCJtaW4iLCAiMCIpOworICAgIHRoaXMuX2FscGhhRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1heCIs
ICIxMDAiKTsKKyAgICB0aGlzLl9hbHBoYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdl
IiwgYWxwaGFEcmFnLmJpbmQodGhpcyksIGZhbHNlKTsKKworICAgIHZhciBzd2F0Y2hFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIHN3YXRjaEVsZW1lbnQuY2xh
c3NOYW1lID0gInN3YXRjaCI7CisgICAgdGhpcy5fc3dhdGNoSW5uZXJFbGVtZW50ID0gc3dhdGNo
RWxlbWVudC5jcmVhdGVDaGlsZCgic3BhbiIsICJzd2F0Y2gtaW5uZXIiKTsKKworICAgIHZhciBk
aXNwbGF5Q29udGFpbmVyID0gcmFuZ2VDb250YWluZXIuY3JlYXRlQ2hpbGQoImRpdiIpOworCisg
ICAgdmFyIGNvbG9yTGFiZWwgPSBkaXNwbGF5Q29udGFpbmVyLmNyZWF0ZUNoaWxkKCJsYWJlbCIp
OworICAgIGNvbG9yTGFiZWwudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoImNv
bG9yOiAiKTsKKworICAgIGRpc3BsYXlDb250YWluZXIuYXBwZW5kQ2hpbGQoc3dhdGNoRWxlbWVu
dCk7CisKKyAgICB0aGlzLl9kaXNwbGF5RWxlbWVudCA9IGRpc3BsYXlDb250YWluZXIuY3JlYXRl
Q2hpbGQoInNwYW4iKTsKKworICAgIFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5kcmFnZ2FibGUodGhp
cy5fc2xpZGVyRWxlbWVudCwgaHVlRHJhZy5iaW5kKHRoaXMpKTsKKyAgICBXZWJJbnNwZWN0b3Iu
U3BlY3RydW0uZHJhZ2dhYmxlKHRoaXMuX2RyYWdnZXJFbGVtZW50LCBjb2xvckRyYWcuYmluZCh0
aGlzKSk7CisKKyAgICBmdW5jdGlvbiBodWVEcmFnKGVsZW1lbnQsIGRyYWdYLCBkcmFnWSkKKyAg
ICB7CisgICAgICAgIHRoaXMuaHN2WzBdID0gKGRyYWdZIC8gdGhpcy5zbGlkZUhlaWdodCk7CisK
KyAgICAgICAgdGhpcy5fb25jaGFuZ2UoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb2xvckRy
YWcoZWxlbWVudCwgZHJhZ1gsIGRyYWdZKQorICAgIHsKKyAgICAgICAgdGhpcy5oc3ZbMV0gPSBk
cmFnWCAvIHRoaXMuZHJhZ1dpZHRoOworICAgICAgICB0aGlzLmhzdlsyXSA9ICh0aGlzLmRyYWdI
ZWlnaHQgLSBkcmFnWSkgLyB0aGlzLmRyYWdIZWlnaHQ7CisKKyAgICAgICAgdGhpcy5fb25jaGFu
Z2UoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhbHBoYURyYWcoKQorICAgIHsKKyAgICAgICAg
dGhpcy5oc3ZbM10gPSB0aGlzLl9hbHBoYUVsZW1lbnQudmFsdWUgLyAxMDA7CisKKyAgICAgICAg
dGhpcy5fb25jaGFuZ2UoKTsKKyAgICB9CisKKyAgICB0aGlzLl9oaWRlUHJveHkgPSB0aGlzLmhp
ZGUuYmluZCh0aGlzKTsKK307CisKK1dlYkluc3BlY3Rvci5TcGVjdHJ1bS5FdmVudHMgPSB7Cisg
ICAgQ29sb3JDaGFuZ2VkOiAiQ29sb3JDaGFuZ2VkIiwKKyAgICBIaWRkZW46ICJIaWRkZW4iCit9
OworCitXZWJJbnNwZWN0b3IuU3BlY3RydW0uaHN2YVRvUkdCQSA9IGZ1bmN0aW9uKGgsIHMsIHYs
IGEpCit7CisgICAgdmFyIHIsIGcsIGI7CisKKyAgICB2YXIgaSA9IE1hdGguZmxvb3IoaCAqIDYp
OworICAgIHZhciBmID0gaCAqIDYgLSBpOworICAgIHZhciBwID0gdiAqICgxIC0gcyk7CisgICAg
dmFyIHEgPSB2ICogKDEgLSBmICogcyk7CisgICAgdmFyIHQgPSB2ICogKDEgLSAoMSAtIGYpICog
cyk7CisKKyAgICBzd2l0Y2goaSAlIDYpIHsKKyAgICBjYXNlIDA6CisgICAgICAgIHIgPSB2LCBn
ID0gdCwgYiA9IHA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAgciA9IHEs
IGcgPSB2LCBiID0gcDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgICByID0g
cCwgZyA9IHYsIGIgPSB0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIHIg
PSBwLCBnID0gcSwgYiA9IHY7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAgICAgICAg
ciA9IHQsIGcgPSBwLCBiID0gdjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA1OgorICAgICAg
ICByID0gdiwgZyA9IHAsIGIgPSBxOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1
cm4gW01hdGgucm91bmQociAqIDI1NSksIE1hdGgucm91bmQoZyAqIDI1NSksIE1hdGgucm91bmQo
YiAqIDI1NSksIGFdOworfTsKKworV2ViSW5zcGVjdG9yLlNwZWN0cnVtLnJnYmFUb0hTVkEgPSBm
dW5jdGlvbihyLCBnLCBiLCBhKQoreworICAgIHIgPSByIC8gMjU1OworICAgIGcgPSBnIC8gMjU1
OworICAgIGIgPSBiIC8gMjU1OworICAgIAorICAgIHZhciBtYXggPSBNYXRoLm1heChyLCBnLCBi
KTsKKyAgICB2YXIgbWluID0gTWF0aC5taW4ociwgZywgYik7CisgICAgdmFyIGg7CisgICAgdmFy
IHM7CisgICAgdmFyIHYgPSBtYXg7CisKKyAgICB2YXIgZCA9IG1heCAtIG1pbjsKKyAgICBzID0g
bWF4ID8gZCAvIG1heCA6IDA7CisKKyAgICBpZihtYXggPT09IG1pbikgeworICAgICAgICAvLyBB
Y2hyb21hdGljLgorICAgICAgICBoID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBzd2l0Y2go
bWF4KSB7CisgICAgICAgIGNhc2UgcjoKKyAgICAgICAgICAgIGggPSAoZyAtIGIpIC8gZCArIChn
IDwgYiA/IDYgOiAwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGc6CisgICAg
ICAgICAgICBoID0gKGIgLSByKSAvIGQgKyAyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgYjoKKyAgICAgICAgICAgIGggPSAociAtIGcpIC8gZCArIDQ7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBoIC89IDY7CisgICAgfQorICAgIHJldHVybiBbaCwg
cywgdiwgYV07Cit9OworCisvL0ZJWE1FOiBtaWdyYXRlIHRvIFdlYkluc3BlY3Rvci5lbGVtZW50
RHJhZ1N0YXJ0CitXZWJJbnNwZWN0b3IuU3BlY3RydW0uZHJhZ2dhYmxlID0gZnVuY3Rpb24oZWxl
bWVudCwgb25tb3ZlLCBvbnN0YXJ0LCBvbnN0b3ApIHsKKworICAgIHZhciBkb2MgPSBkb2N1bWVu
dDsKKyAgICB2YXIgZHJhZ2dpbmc7CisgICAgdmFyIG9mZnNldDsKKyAgICB2YXIgc2Nyb2xsT2Zm
c2V0OworICAgIHZhciBtYXhIZWlnaHQ7CisgICAgdmFyIG1heFdpZHRoOworCisgICAgZnVuY3Rp
b24gcHJldmVudChlKQorICAgIHsKKyAgICAgICAgaWYgKGUuc3RvcFByb3BhZ2F0aW9uKQorICAg
ICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKKworICAgICAgICBpZiAoZS5wcmV2ZW50RGVm
YXVsdCkKKyAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBtb3ZlKGUpCisgICAgeworICAgICAgICBpZiAoZHJhZ2dpbmcpIHsKKyAgICAgICAgICAg
IHZhciBkcmFnWCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGUucGFnZVggLSBvZmZzZXQubGVmdCAr
IHNjcm9sbE9mZnNldC5sZWZ0LCBtYXhXaWR0aCkpOworICAgICAgICAgICAgdmFyIGRyYWdZID0g
TWF0aC5tYXgoMCwgTWF0aC5taW4oZS5wYWdlWSAtIG9mZnNldC50b3AgKyBzY3JvbGxPZmZzZXQu
dG9wLCBtYXhIZWlnaHQpKTsKKworICAgICAgICAgICAgaWYgKG9ubW92ZSkKKyAgICAgICAgICAg
ICAgICBvbm1vdmUoZWxlbWVudCwgZHJhZ1gsIGRyYWdZKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHN0YXJ0KGUpCisgICAgeworICAgICAgICB2YXIgcmlnaHRDbGljayA9IGUu
d2hpY2ggPyAoZS53aGljaCA9PT0gMykgOiAoZS5idXR0b24gPT09IDIpOworCisgICAgICAgIGlm
ICghcmlnaHRDbGljayAmJiAhZHJhZ2dpbmcpIHsKKworICAgICAgICAgICAgaWYgKG9uc3RhcnQp
CisgICAgICAgICAgICAgICAgb25zdGFydChlbGVtZW50LCBlKQorCisgICAgICAgICAgICBkcmFn
Z2luZyA9IHRydWU7CisgICAgICAgICAgICBtYXhIZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIG1heFdpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aDsKKworICAgICAg
ICAgICAgc2Nyb2xsT2Zmc2V0ID0gZWxlbWVudC5zY3JvbGxPZmZzZXQoKTsKKyAgICAgICAgICAg
IG9mZnNldCA9IGVsZW1lbnQudG90YWxPZmZzZXQoKTsKKworICAgICAgICAgICAgZG9jLmFkZEV2
ZW50TGlzdGVuZXIoInNlbGVjdHN0YXJ0IiwgcHJldmVudCwgZmFsc2UpOworICAgICAgICAgICAg
ZG9jLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdzdGFydCIsIHByZXZlbnQsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGRvYy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCBtb3ZlLCBmYWxzZSk7Cisg
ICAgICAgICAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHN0b3AsIGZhbHNlKTsK
KworICAgICAgICAgICAgbW92ZShlKTsKKyAgICAgICAgICAgIHByZXZlbnQoZSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdG9wKGUpCisgICAgeworICAgICAgICBpZiAoZHJh
Z2dpbmcpIHsKKyAgICAgICAgICAgIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCJzZWxlY3RzdGFy
dCIsIHByZXZlbnQsIGZhbHNlKTsKKyAgICAgICAgICAgIGRvYy5yZW1vdmVFdmVudExpc3RlbmVy
KCJkcmFnc3RhcnQiLCBwcmV2ZW50LCBmYWxzZSk7CisgICAgICAgICAgICBkb2MucmVtb3ZlRXZl
bnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgbW92ZSwgZmFsc2UpOworICAgICAgICAgICAgZG9jLnJl
bW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBzdG9wLCBmYWxzZSk7CisKKyAgICAgICAgICAg
IGlmIChvbnN0b3ApCisgICAgICAgICAgICAgICAgb25zdG9wKGVsZW1lbnQsIGUpOworICAgICAg
ICB9CisKKyAgICAgICAgZHJhZ2dpbmcgPSBmYWxzZTsKKyAgICB9CisKKyAgICBlbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHN0YXJ0LCBmYWxzZSk7Cit9OworCitXZWJJbnNw
ZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlID0geworICAgIHNldCBjb2xvcihjb2xvcikKKyAgICB7
CisgICAgICAgIHZhciByZ2JhID0gKGNvbG9yLnJnYmEgfHwgY29sb3IucmdiKS5zbGljZSgwKTsK
KyAgICAgICAgCisgICAgICAgIGlmIChyZ2JhLmxlbmd0aCA9PT0gMykKKyAgICAgICAgICAgIHJn
YmFbM10gPSAxOworICAgICAgICAKKyAgICAgICAgdGhpcy5oc3YgPSBXZWJJbnNwZWN0b3IuU3Bl
Y3RydW0ucmdiYVRvSFNWQShyZ2JhWzBdLCByZ2JhWzFdLCByZ2JhWzJdLCByZ2JhWzNdKTsKKyAg
ICB9LAorCisgICAgZ2V0IGNvbG9yKCkKKyAgICB7CisgICAgICAgIHZhciByZ2JhID0gV2ViSW5z
cGVjdG9yLlNwZWN0cnVtLmhzdmFUb1JHQkEodGhpcy5oc3ZbMF0sIHRoaXMuaHN2WzFdLCB0aGlz
LmhzdlsyXSwgdGhpcy5oc3ZbM10pOworICAgICAgICB2YXIgY29sb3I7CisKKyAgICAgICAgaWYg
KHJnYmFbM10gPT09IDEpCisgICAgICAgICAgICBjb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5m
cm9tUkdCKHJnYmFbMF0sIHJnYmFbMV0sIHJnYmFbMl0pOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBjb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5mcm9tUkdCQShyZ2JhWzBdLCByZ2JhWzFd
LCByZ2JhWzJdLCByZ2JhWzNdKTsKKworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5D
b2xvcihjb2xvci50b1N0cmluZyh0aGlzLm91dHB1dENvbG9yRm9ybWF0KSk7CisgICAgfSwKKwor
ICAgIGdldCBvdXRwdXRDb2xvckZvcm1hdCgpCisgICAgeworICAgICAgICB2YXIgY2YgPSBXZWJJ
bnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ29sb3JGb3JtYXQ7CisgICAgICAgIHZhciBmb3Jt
YXQgPSB0aGlzLl9vcmlnaW5hbEZvcm1hdDsKKworICAgICAgICBpZiAodGhpcy5oc3ZbM10gPT09
IDEpIHsKKyAgICAgICAgICAgIC8vIFNpbXBsaWZ5IHRyYW5zcGFyZW50IGZvcm1hdHMuCisgICAg
ICAgICAgICBpZiAoZm9ybWF0ID09PSBjZi5SR0JBKQorICAgICAgICAgICAgICAgIGZvcm1hdCA9
IGNmLlJHQjsKKyAgICAgICAgICAgIGVsc2UgaWYgKGZvcm1hdCA9PT0gY2YuSFNMQSkKKyAgICAg
ICAgICAgICAgICBmb3JtYXQgPSBjZi5IU0w7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAvLyBFdmVyeXRoaW5nIGV4Y2VwdCBIU0woQSkgc2hvdWxkIGJlIHJldHVybmVk
IGFzIFJHQkEgaWYgdHJhbnNwYXJlbmN5IGlzIGludm9sdmVkLgorICAgICAgICAgICAgaWYgKGZv
cm1hdCA9PT0gY2YuSFNMIHx8IGZvcm1hdCA9PT0gY2YuSFNMQSkKKyAgICAgICAgICAgICAgICBm
b3JtYXQgPSBjZi5IU0xBOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZvcm1h
dCA9IGNmLlJHQkE7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZm9ybWF0OworICAgIH0s
CisKKyAgICBnZXQgY29sb3JIdWVPbmx5KCkKKyAgICB7CisgICAgICAgIHZhciByZ2JhID0gV2Vi
SW5zcGVjdG9yLlNwZWN0cnVtLmhzdmFUb1JHQkEodGhpcy5oc3ZbMF0sIDEsIDEsIDEpOworICAg
ICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKHJnYmFbMF0sIHJnYmFbMV0s
IHJnYmFbMl0sIHJnYmFbM10pOworICAgIH0sCisKKyAgICBzZXQgZGlzcGxheVRleHQodGV4dCkK
KyAgICB7CisgICAgICAgIHRoaXMuX2Rpc3BsYXlFbGVtZW50LnRleHRDb250ZW50ID0gdGV4dDsK
KyAgICB9LAorCisgICAgX29uY2hhbmdlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlz
Ll91cGRhdGVVSSgpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuU3BlY3RydW0uRXZlbnRzLkNvbG9yQ2hhbmdlZCwgdGhpcy5jb2xvcik7CisgICAg
fSwKKworICAgIF91cGRhdGVIZWxwZXJMb2NhdGlvbnM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHZhciBoID0gdGhpcy5oc3ZbMF07CisgICAgICAgIHZhciBzID0gdGhpcy5oc3ZbMV07Cisg
ICAgICAgIHZhciB2ID0gdGhpcy5oc3ZbMl07CisKKyAgICAgICAgLy8gV2hlcmUgdG8gc2hvdyB0
aGUgbGl0dGxlIGNpcmNsZSB0aGF0IGRpc3BsYXlzIHlvdXIgY3VycmVudCBzZWxlY3RlZCBjb2xv
ci4KKyAgICAgICAgdmFyIGRyYWdYID0gcyAqIHRoaXMuZHJhZ1dpZHRoOworICAgICAgICB2YXIg
ZHJhZ1kgPSB0aGlzLmRyYWdIZWlnaHQgLSAodiAqIHRoaXMuZHJhZ0hlaWdodCk7CisKKyAgICAg
ICAgZHJhZ1ggPSBNYXRoLm1heCgtdGhpcy5fZHJhZ0hlbHBlckVsZW1lbnRIZWlnaHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICBNYXRoLm1pbih0aGlzLmRyYWdXaWR0aCAtIHRoaXMuX2RyYWdI
ZWxwZXJFbGVtZW50SGVpZ2h0LCBkcmFnWCAtIHRoaXMuX2RyYWdIZWxwZXJFbGVtZW50SGVpZ2h0
KSk7CisgICAgICAgIGRyYWdZID0gTWF0aC5tYXgoLXRoaXMuX2RyYWdIZWxwZXJFbGVtZW50SGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5taW4odGhpcy5kcmFnSGVpZ2h0IC0g
dGhpcy5fZHJhZ0hlbHBlckVsZW1lbnRIZWlnaHQsIGRyYWdZIC0gdGhpcy5fZHJhZ0hlbHBlckVs
ZW1lbnRIZWlnaHQpKTsKKworICAgICAgICB0aGlzLl9kcmFnSGVscGVyRWxlbWVudC5wb3NpdGlv
bkF0KGRyYWdYLCBkcmFnWSk7CisKKyAgICAgICAgLy8gV2hlcmUgdG8gc2hvdyB0aGUgYmFyIHRo
YXQgZGlzcGxheXMgeW91ciBjdXJyZW50IHNlbGVjdGVkIGh1ZS4KKyAgICAgICAgdmFyIHNsaWRl
WSA9IChoICogdGhpcy5zbGlkZUhlaWdodCkgLSB0aGlzLnNsaWRlSGVscGVySGVpZ2h0OworICAg
ICAgICB0aGlzLnNsaWRlSGVscGVyLnN0eWxlLnRvcCA9IHNsaWRlWSArICJweCI7CisKKyAgICAg
ICAgdGhpcy5fYWxwaGFFbGVtZW50LnZhbHVlID0gdGhpcy5oc3ZbM10gKiAxMDA7CisgICAgfSwK
KworICAgIF91cGRhdGVVSTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fdXBkYXRl
SGVscGVyTG9jYXRpb25zKCk7CisKKyAgICAgICAgdmFyIHJnYiA9ICh0aGlzLmNvbG9yLnJnYmEg
fHwgdGhpcy5jb2xvci5yZ2IpLnNsaWNlKDApOworCisgICAgICAgIGlmIChyZ2IubGVuZ3RoID09
PSAzKQorICAgICAgICAgICAgcmdiWzNdID0gMTsKKworICAgICAgICB2YXIgcmdiSHVlT25seSA9
IHRoaXMuY29sb3JIdWVPbmx5LnJnYjsKKworICAgICAgICB2YXIgZmxhdENvbG9yID0gInJnYigi
ICsgcmdiSHVlT25seVswXSArICIsICIgKyByZ2JIdWVPbmx5WzFdICsgIiwgIiArIHJnYkh1ZU9u
bHlbMl0gKyAiKSI7CisgICAgICAgIHZhciBmdWxsQ29sb3IgPSAicmdiYSgiICsgcmdiWzBdICsg
IiwgIiArIHJnYlsxXSArICIsICIgKyByZ2JbMl0gKyAiLCAiICsgcmdiWzNdICsgIikiOworCisg
ICAgICAgIHRoaXMuX2RyYWdnZXJFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGZsYXRD
b2xvcjsKKyAgICAgICAgdGhpcy5fc3dhdGNoSW5uZXJFbGVtZW50LnN0eWxlLmJhY2tncm91bmRD
b2xvciA9IGZ1bGxDb2xvcjsKKworICAgICAgICB0aGlzLl9hbHBoYUVsZW1lbnQudmFsdWUgPSB0
aGlzLmhzdlszXSAqIDEwMDsKKyAgICB9LAorCisgICAgdG9nZ2xlOiBmdW5jdGlvbihlbGVtZW50
LCBjb2xvciwgZm9ybWF0KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2lzU2hvd24pCisgICAg
ICAgICAgICB0aGlzLmhpZGUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5zaG93
KGVsZW1lbnQsIGNvbG9yLCBmb3JtYXQpOworCisgICAgICAgIHJldHVybiB0aGlzLl9pc1Nob3du
OworICAgIH0sCisKKyAgICBzaG93OiBmdW5jdGlvbihlbGVtZW50LCBjb2xvciwgZm9ybWF0KQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2lzU2hvd24pCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgdGhpcy5faXNTaG93biA9IHRydWU7CisgICAgICAgIHRoaXMucmVwb3NpdGlvbihl
bGVtZW50KTsKKworICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24i
LCB0aGlzLl9oaWRlUHJveHkpOworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmx1
ciIsIHRoaXMuX2hpZGVQcm94eSk7CisKKyAgICAgICAgdGhpcy5zbGlkZUhlaWdodCA9IHRoaXMu
X3NsaWRlckVsZW1lbnQub2Zmc2V0SGVpZ2h0OworICAgICAgICB0aGlzLmRyYWdXaWR0aCA9IHRo
aXMuX2RyYWdnZXJFbGVtZW50Lm9mZnNldFdpZHRoOworICAgICAgICB0aGlzLmRyYWdIZWlnaHQg
PSB0aGlzLl9kcmFnZ2VyRWxlbWVudC5vZmZzZXRIZWlnaHQ7CisgICAgICAgIHRoaXMuX2RyYWdI
ZWxwZXJFbGVtZW50SGVpZ2h0ID0gdGhpcy5fZHJhZ0hlbHBlckVsZW1lbnQub2Zmc2V0SGVpZ2h0
IC8gMjsKKyAgICAgICAgdGhpcy5zbGlkZUhlbHBlckhlaWdodCA9IHRoaXMuc2xpZGVIZWxwZXIu
b2Zmc2V0SGVpZ2h0IC8gMjsKKworICAgICAgICB0aGlzLmNvbG9yID0gY29sb3I7CisgICAgICAg
IHRoaXMuX29yaWdpbmFsRm9ybWF0ID0gZm9ybWF0IHx8IGNvbG9yLmZvcm1hdDsKKworICAgICAg
ICB0aGlzLl91cGRhdGVVSSgpOworICAgIH0sCisKKyAgICByZXBvc2l0aW9uOiBmdW5jdGlvbihl
bGVtZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fcG9wb3Zlci5zaG93KHRoaXMuX2NvbnRhaW5l
ckVsZW1lbnQsIGVsZW1lbnQpOworICAgIH0sCisKKyAgICBoaWRlOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICBkZWxldGUgdGhpcy5faXNTaG93bjsKKyAgICAgICAgdGhpcy5fcG9wb3Zlci5o
aWRlKCk7CisKKyAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3du
IiwgdGhpcy5faGlkZVByb3h5KTsKKyAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIo
ImJsdXIiLCB0aGlzLl9oaWRlUHJveHkpOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TcGVjdHJ1bS5FdmVudHMuSGlkZGVuKTsKKworICAgICAg
ICAvLyBPbmx5IHdhbnQgdG8gYWxsb3cgb25lIGluc3RhbmNlIHRvIGJlIG9wZW4gYXQgYSB0aW1l
LCBzbyBjbGVhciBvdXQgYW55CisgICAgICAgIC8vIGV4aXN0aW5nIGV2ZW50IGxpc3RlbmVycy4K
KyAgICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoKTsKKyAgICB9Cit9OworCitXZWJJbnNw
ZWN0b3IuU3BlY3RydW0ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TdHlsZXNTaWRlYmFyUGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU3R5bGVzU2lkZWJhclBhbmUuanMKaW5kZXggNDc5MWI1NDdiNjEzNDI2ZTMxMTEzYjAwNDUy
MDg3NTVjNDRlNTkyNC4uNzBkNDI1ZTM1ZTI5MzlmZmY2YmJkOTliYWFiMjYyOTg1YTY2Y2Q2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRl
YmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxl
c1NpZGViYXJQYW5lLmpzCkBAIC05MCw2ICs5MCw5IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRl
YmFyUGFuZSA9IGZ1bmN0aW9uKGNvbXB1dGVkU3R5bGVQYW5lKQogICAgIHRoaXMuX3NlY3Rpb25z
Q29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5ib2R5
RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWN0aW9uc0NvbnRhaW5lcik7CiAKKyAgICBpZiAo
UHJlZmVyZW5jZXMudXNlU3BlY3RydW0pCisgICAgICAgIHRoaXMuX3NwZWN0cnVtID0gbmV3IFdl
Ykluc3BlY3Rvci5TcGVjdHJ1bSgpOworCiAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLlN0eWxlU2hlZXRD
aGFuZ2VkLCB0aGlzLl9zdHlsZVNoZWV0T3JNZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCwgdGhpcyk7
CiAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWwuRXZlbnRzLk1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkLCB0aGlzLl9zdHls
ZVNoZWV0T3JNZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9y
LmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5B
dHRyTW9kaWZpZWQsIHRoaXMuX2F0dHJpYnV0ZXNNb2RpZmllZCwgdGhpcyk7CkBAIC0xNjYyLDI4
ICsxNjY1LDk1IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUodGV4dCk7CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgdmFyIGZvcm1h
dCA9IGdldEZvcm1hdCgpOworICAgICAgICAgICAgICAgIHZhciBoYXNDb2xvcnBpY2tlciA9IHNl
bGYuX3BhcmVudFBhbmU7CisgICAgICAgICAgICAgICAgdmFyIHNwZWN0cnVtID0gaGFzQ29sb3Jw
aWNrZXIgPyBzZWxmLl9wYXJlbnRQYW5lLl9zcGVjdHJ1bSA6IG51bGw7CisKICAgICAgICAgICAg
ICAgICB2YXIgc3dhdGNoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsK
LSAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJDbGljayB0byBjaGFuZ2UgY29sb3IgZm9ybWF0Iik7Ci0gICAgICAgICAgICAgICAgc3dh
dGNoRWxlbWVudC5jbGFzc05hbWUgPSAic3dhdGNoIjsKLSAgICAgICAgICAgICAgICBzd2F0Y2hF
bGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCJiYWNrZ3JvdW5kLWNvbG9yIiwgdGV4dCk7Ci0KLSAg
ICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgY2hh
bmdlQ29sb3JEaXNwbGF5LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIGZ1bmN0aW9uKGV2ZW50KSB7IGV2ZW50LnN0b3BQ
cm9wYWdhdGlvbigpIH0sIGZhbHNlKTsKLQotICAgICAgICAgICAgICAgIHZhciBmb3JtYXQ7Ci0g
ICAgICAgICAgICAgICAgdmFyIGZvcm1hdFNldHRpbmcgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Mu
Y29sb3JGb3JtYXQuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGZvcm1hdFNldHRpbmcgPT09
IGNmLk9yaWdpbmFsKQotICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSBjZi5PcmlnaW5hbDsK
LSAgICAgICAgICAgICAgICBlbHNlIGlmIChjb2xvci5uaWNrbmFtZSkKLSAgICAgICAgICAgICAg
ICAgICAgZm9ybWF0ID0gY2YuTmlja25hbWU7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9y
bWF0U2V0dGluZyA9PT0gY2YuUkdCKQotICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAoY29s
b3Iuc2ltcGxlID8gY2YuUkdCIDogY2YuUkdCQSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAo
Zm9ybWF0U2V0dGluZyA9PT0gY2YuSFNMKQotICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAo
Y29sb3Iuc2ltcGxlID8gY2YuSFNMIDogY2YuSFNMQSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBp
ZiAoY29sb3Iuc2ltcGxlKQotICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3IuaGFz
U2hvcnRIZXgoKSA/IGNmLlNob3J0SEVYIDogY2YuSEVYKTsKKyAgICAgICAgICAgICAgICB2YXIg
c3dhdGNoSW5uZXJFbGVtZW50ID0gc3dhdGNoRWxlbWVudC5jcmVhdGVDaGlsZCgic3BhbiIsICJz
d2F0Y2gtaW5uZXIiKTsKKyAgICAgICAgICAgICAgICBpZiAoaGFzQ29sb3JwaWNrZXIpCisgICAg
ICAgICAgICAgICAgICAgIHN3YXRjaEVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkNsaWNrIHRvIG9wZW4gYSBjb2xvcnBpY2tlciIpOwogICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuUkdCQTsKKyAgICAgICAgICAgICAgICAg
ICAgc3dhdGNoRWxlbWVudC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8g
Y2hhbmdlIGNvbG9yIGZvcm1hdCIpOworCisgICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5j
bGFzc05hbWUgPSAic3dhdGNoIjsKKworICAgICAgICAgICAgICAgIHN3YXRjaEVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgc3RvcFByb3BhZ2F0aW9uLCBmYWxzZSk7CisgICAg
ICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHN3YXRj
aENsaWNrLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJkYmxjbGljayIsIHN0b3BQcm9wYWdhdGlvbiwgZmFsc2UpOworCisgICAgICAgICAg
ICAgICAgc3dhdGNoSW5uZXJFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRleHQ7CisK
KyAgICAgICAgICAgICAgICB2YXIgc2Nyb2xsZXJFbGVtZW50ID0gaGFzQ29sb3JwaWNrZXIgPyBz
ZWxmLl9wYXJlbnRQYW5lLl9jb21wdXRlZFN0eWxlUGFuZS5lbGVtZW50LnBhcmVudEVsZW1lbnQg
OiBudWxsOworCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gc3BlY3RydW1DaGFuZ2UoZSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gZS5kYXRhOworCisg
ICAgICAgICAgICAgICAgICAgIHZhciBjb2xvclN0cmluZyA9IGNvbG9yLnRvU3RyaW5nKCk7CisK
KyAgICAgICAgICAgICAgICAgICAgY29sb3JWYWx1ZUVsZW1lbnQudGV4dENvbnRlbnQgPSBjb2xv
clN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgc3BlY3RydW0uZGlzcGxheVRleHQgPSBjb2xv
clN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgc3dhdGNoSW5uZXJFbGVtZW50LnN0eWxlLmJh
Y2tncm91bmRDb2xvciA9IGNvbG9yU3RyaW5nOworCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
YXBwbHlTdHlsZVRleHQobmFtZUVsZW1lbnQudGV4dENvbnRlbnQgKyAiOiAiICsgdmFsdWVFbGVt
ZW50LnRleHRDb250ZW50LCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBzcGVjdHJ1bUhpZGUoKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc2Nyb2xsZXJFbGVtZW50LnJlbW92ZUV2ZW50TGlz
dGVuZXIoInNjcm9sbCIsIHJlcG9zaXRpb25TcGVjdHJ1bSwgZmFsc2UpOworICAgICAgICAgICAg
ICAgICAgICBzZWxmLmFwcGx5U3R5bGVUZXh0KG5hbWVFbGVtZW50LnRleHRDb250ZW50ICsgIjog
IiArIHZhbHVlRWxlbWVudC50ZXh0Q29udGVudCwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpOworICAgICAg
ICAgICAgICAgICAgICBzcGVjdHJ1bS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5T
cGVjdHJ1bS5FdmVudHMuQ29sb3JDaGFuZ2VkLCBzcGVjdHJ1bUNoYW5nZSk7CisgICAgICAgICAg
ICAgICAgICAgIHNwZWN0cnVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNwZWN0
cnVtLkV2ZW50cy5IaWRkZW4sIHNwZWN0cnVtSGlkZSk7CisKKyAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlIHNlbGYuX3BhcmVudFBhbmUuX2lzRWRpdGluZ1N0eWxlOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJlcG9zaXRpb25TcGVjdHJ1bSgpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzcGVjdHJ1bS5yZXBvc2l0aW9uKHN3
YXRjaEVsZW1lbnQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZ1bmN0
aW9uIHN3YXRjaENsaWNrKGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAvLyBBbHQgKyBjbGljayB0b2dnbGVzIGNvbG9yIGZvcm1hdHMuCisgICAgICAgICAgICAgICAg
ICAgIC8vIENsaWNrIG9wZW5zIGNvbG9ycGlja2VyLCBvbmx5IGlmIHRoZSBlbGVtZW50IGlzIG5v
dCBpbiBjb21wdXRlZCBzdHlsZXMgc2VjdGlvbi4KKworICAgICAgICAgICAgICAgICAgICBpZiAo
IXNwZWN0cnVtIHx8IGUuYWx0S2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlQ29s
b3JEaXNwbGF5KGUpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChoYXNDb2xvcnBpY2tl
cikgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlzU2hvd24gPSBzcGVjdHJ1bS50b2dn
bGUoc3dhdGNoRWxlbWVudCwgY29sb3IsIGZvcm1hdCk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpc1Nob3duKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3RydW0u
ZGlzcGxheVRleHQgPSBjb2xvci50b1N0cmluZyhmb3JtYXQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3BhcmVudFBhbmUuX2lzRWRpdGluZ1N0eWxlID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzcGVjdHJ1bS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5TcGVjdHJ1bS5FdmVudHMuQ29sb3JDaGFuZ2VkLCBzcGVjdHJ1bUNoYW5nZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3RydW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuU3BlY3RydW0uRXZlbnRzLkhpZGRlbiwgc3BlY3RydW1IaWRlKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNjcm9sbGVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3Jv
bGwiLCByZXBvc2l0aW9uU3BlY3RydW0sIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uIGdldEZvcm1hdCgpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgZm9ybWF0OworICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybWF0U2V0
dGluZyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb2xvckZvcm1hdC5nZXQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGZvcm1hdFNldHRpbmcgPT09IGNmLk9yaWdpbmFsKQorICAgICAgICAg
ICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuT3JpZ2luYWw7CisgICAgICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGNvbG9yLm5pY2tuYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0
ID0gY2YuTmlja25hbWU7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvcm1hdFNldHRp
bmcgPT09IGNmLlJHQikKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IChjb2xvci5z
aW1wbGUgPyBjZi5SR0IgOiBjZi5SR0JBKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
Zm9ybWF0U2V0dGluZyA9PT0gY2YuSFNMKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0
ID0gKGNvbG9yLnNpbXBsZSA/IGNmLkhTTCA6IGNmLkhTTEEpOworICAgICAgICAgICAgICAgICAg
ICBlbHNlIGlmIChjb2xvci5zaW1wbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQg
PSAoY29sb3IuaGFzU2hvcnRIZXgoKSA/IGNmLlNob3J0SEVYIDogY2YuSEVYKTsKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gY2YuUkdC
QTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Zm9ybWF0OworICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHZhciBjb2xvclZh
bHVlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgICAg
ICAgICBjb2xvclZhbHVlRWxlbWVudC50ZXh0Q29udGVudCA9IGNvbG9yLnRvU3RyaW5nKGZvcm1h
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktp
dC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5k
ZXggN2RkMDhjYmM3MWFjNjIwMTg4N2QxZTg3ZWYzNzAwMTM0MGU5N2E2Zi4uYTg3YzYzMzY5MDE0
ZmZkZTUzZDA4Yjk0ZGQwM2RjNDg0ZGRiMjIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtMTM1LDYgKzEzNSw3IEBACiAgICAgPGZpbGU+
U291cmNlSFRNTFRva2VuaXplci5qczwvZmlsZT4KICAgICA8ZmlsZT5Tb3VyY2VKYXZhU2NyaXB0
VG9rZW5pemVyLmpzPC9maWxlPgogICAgIDxmaWxlPlNvdXJjZVRva2VuaXplci5qczwvZmlsZT4K
KyAgICA8ZmlsZT5TcGVjdHJ1bS5qczwvZmlsZT4KICAgICA8ZmlsZT5TcGxpdFZpZXcuanM8L2Zp
bGU+CiAgICAgPGZpbGU+U3RhdHVzQmFyQnV0dG9uLmpzPC9maWxlPgogICAgIDxmaWxlPlN0eWxl
c1NpZGViYXJQYW5lLmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IDcwZjBlMTM2ZmE5Njg5ZWJlZTEwZjhjMGIwN2Ux
ZjA1YWYwMWNlNjguLjNhMzE1OGY3YzM3NGNkMzc0Y2M2Nzg4NzI1Njk3MDM0OTM3ZmEyZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNz
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MK
QEAgLTE0NDUsNiArMTQ0NSwxMyBAQCBsaS5lZGl0aW5nIC5zd2F0Y2gsIGxpLmVkaXRpbmcgLmVu
YWJsZWQtYnV0dG9uLCAgbGkuZWRpdGluZy1zdWItcGFydCAuZGVsZXRlLWJ1dAogICAgIHdpZHRo
OiAxZW07CiAgICAgaGVpZ2h0OiAxZW07CiAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjgs
IDEyOCwgMTI4LCAwLjYpOworICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChJbWFnZXMvY2hlY2tl
ci5wbmcpOworfQorCisuc3dhdGNoLWlubmVyIHsgCisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVp
Z2h0OiAxMDAlOworICAgIGRpc3BsYXk6IGJsb2NrOwogfQogCiAuc3dhdGNoOmhvdmVyIHsKQEAg
LTI2NDUsMyArMjY1MiwxMDIgQEAgYm9keS5wbGF0Zm9ybS1tYWMgI2RyYXdlci1zdGF0dXMtYmFy
IC5zZWFyY2gtc3RhdHVzLWJhci1wcm9ncmVzcyB7CiAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3Bh
cmVudDsKICAgICBib3JkZXItd2lkdGg6IDAgMCAxMXB4IDA7CiB9CisKKy8qIGh0dHBzOi8vZ2l0
aHViLmNvbS9iZ3JpbnMvc3BlY3RydW0gKi8KKy5zcGVjdHJ1bS1jb250YWluZXIgeworICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDogMDsKKyAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgYmFja2dyb3VuZDogcmdiYSgyMzAsIDIzMCwgMjMwLCAxKSAh
aW1wb3J0YW50OworICAgIGJvcmRlcjogMXB4IHNvbGlkICM2NDY0NjQ7CisgICAgcGFkZGluZzog
MTBweDsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgei1pbmRleDogMTA7CisgICAgLXdlYmtpdC11
c2VyLXNlbGVjdDogbm9uZTsKK30KKworLnNwZWN0cnVtLXRvcCB7CisgICAgcG9zaXRpb246IHJl
bGF0aXZlOworICAgIHdpZHRoOiAxMDAlOworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKK30K
KworLnNwZWN0cnVtLWNvbG9yIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAw
OworICAgIGxlZnQ6IDA7CisgICAgYm90dG9tOiAwOworICAgIHJpZ2h0OiAyMCU7Cit9CisKKy5z
cGVjdHJ1bS1odWUgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAg
cmlnaHQ6IDA7CisgICAgYm90dG9tOiAwOworICAgIGxlZnQ6IDgzJTsKK30KKworLnNwZWN0cnVt
LWZpbGwgeworICAgIC8qIFNhbWUgYXMgc3BlY3RydW0tY29sb3Igd2lkdGggdG8gZm9yY2UgYXNw
ZWN0IHJhdGlvLiAqLworICAgIG1hcmdpbi10b3A6IDgwJTsKK30KKworLnNwZWN0cnVtLXJhbmdl
LWNvbnRhaW5lciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHBhZGRpbmctdG9wOiAx
MHB4OworfQorCisuc3BlY3RydW0tcmFuZ2UtY29udGFpbmVyICogeworICAgIGZvbnQtc2l6ZTog
OXB4OworICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cit9CisKKy5zcGVjdHJ1bS1yYW5nZS1j
b250YWluZXIgbGFiZWwgeworICAgIHdpZHRoOiAzMnB4OworICAgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKK30KKworLnNwZWN0cnVtLXJhbmdlLWNvbnRhaW5lciBpbnB1dCB7CisgICAgd2lkdGg6
IDEzMHB4OworfQorCisuc3dhdGNoLCAuc3BlY3RydW0tZHJhZ2dlciwgLnNwZWN0cnVtLXNsaWRl
ciB7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKK30KKworLnNwZWN0cnVtLXNhdCB7
CisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCwgd2hp
dGUsIHJnYmEoMjA0LCAxNTQsIDEyOSwgMCkpOworfQorCisuc3BlY3RydW0tdmFsIHsKKyAgICBi
YWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChib3R0b20sIGJsYWNrLCBy
Z2JhKDIwNCwgMTU0LCAxMjksIDApKTsKK30KKworLnNwZWN0cnVtLWh1ZSB7CisgICAgYmFja2dy
b3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZmYwMDAwIDAlLCAjZmZmZjAwIDE3
JSwgIzAwZmYwMCAzMyUsICMwMGZmZmYgNTAlLCAjMDAwMGZmIDY3JSwgI2ZmMDBmZiA4MyUsICNm
ZjAwMDAgMTAwJSk7Cit9CisKKy5zcGVjdHJ1bS1kcmFnZ2VyIHsKKyAgICBib3JkZXItcmFkaXVz
OiA1cHg7CisgICAgaGVpZ2h0OiA1cHg7CisgICAgd2lkdGg6IDVweDsKKyAgICBib3JkZXI6IDFw
eCBzb2xpZCB3aGl0ZTsKKyAgICBjdXJzb3I6IHBvaW50ZXI7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIGJhY2tncm91bmQ6IGJsYWNrOwor
fQorCisuc3BlY3RydW0tc2xpZGVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9w
OiAwOworICAgIGN1cnNvcjogcG9pbnRlcjsKKyAgICBoZWlnaHQ6IDVweDsKKyAgICB3aWR0aDog
MTEwJTsKKyAgICBtYXJnaW4tbGVmdDogLTUlOworICAgIGJhY2tncm91bmQ6IHdoaXRlOworICAg
IG9wYWNpdHk6IC44OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggZDgyZjljYzhjOWZiMWY5NDMzMGE2MjYzYjdlNjBiNDAx
MGZhNTVhZi4uOTRmN2M4MDgxZDYwYzAxMWE3MWVkZTI0MGVlZjJmMzVhMWIzYzZjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBA
IC04Myw2ICs4Myw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iQXBwbGljYXRpb25DYWNoZUl0ZW1zVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSW5kZXhlZERCTW9kZWwuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNjcmlwdC5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU3BlY3Ry
dW0uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
IlNpZGViYXJQYW5lLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJFbGVtZW50c1RyZWVPdXRsaW5lLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJET01QcmVzZW50YXRpb25VdGlscy5qcyI+PC9z
Y3JpcHQ+Cg==
</data>
<flag name="review"
          id="128677"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="129207"
          type_id="3"
          status="-"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>