<?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>38095</bug_id>
          
          <creation_ts>2010-04-25 07:31:59 -0700</creation_ts>
          <short_desc>webkit should implement -moz-any selector (as -webkit-any obviously)</short_desc>
          <delta_ts>2011-03-23 23:53:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>52693</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>abarth</cc>
    
    <cc>arv</cc>
    
    <cc>cyberskull</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>koivisto</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mikelawther</cc>
    
    <cc>mjs</cc>
    
    <cc>myakura.web</cc>
    
    <cc>peter</cc>
    
    <cc>phiw2</cc>
    
    <cc>remi_zara</cc>
    
    <cc>simonjam</cc>
    
    <cc>slightlyoff</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>webmaster</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>216825</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-25 07:31:59 -0700</bug_when>
    <thetext>http://dbaron.org/log/20100424-any

This is awesome and takes away one of the frequent frustrations with CSS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216878</commentid>
    <comment_count>1</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-04-25 20:12:23 -0700</bug_when>
    <thetext>Seems easy enough.  It could replace -webkit-any-link also, since that could just turn into :-webkit-any(:link, :visited).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248001</commentid>
    <comment_count>2</comment_count>
    <who name="Trevor Downs">cyberskull</who>
    <bug_when>2010-07-07 22:05:03 -0700</bug_when>
    <thetext>A copy of the article was posted at http://hacks.mozilla.org/2010/05/moz-any-selector-grouping/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347227</commentid>
    <comment_count>3</comment_count>
      <attachid>81611</attachid>
    <who name="Rémi Zara">remi_zara</who>
    <bug_when>2011-02-08 01:04:02 -0800</bug_when>
    <thetext>Created attachment 81611
patch v1

Here is a patch. Specificity is handled as gecko (that of a pseudo class), and should be fixed in a followup bug.
No other selectors removed or rules changed in .css files.

Had to move the inline CSSSelectorList::next() to the .cpp file to handle the introduced dependency of CSSSelector on CSSSelectorList. Not sure that&apos;s right...

Finally, I had trouble testing for :hover. It works when manually testing though. Pointers welcome for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347229</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-08 01:05:45 -0800</bug_when>
    <thetext>Attachment 81611 did not pass style-queue:

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

Source/WebCore/css/CSSSelectorList.cpp:28:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Source/WebCore/css/CSSSelector.cpp:688:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebCore/css/CSSStyleSelector.cpp:2370:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 3 in 19 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>347232</commentid>
    <comment_count>5</comment_count>
      <attachid>81612</attachid>
    <who name="Rémi Zara">remi_zara</who>
    <bug_when>2011-02-08 01:16:14 -0800</bug_when>
    <thetext>Created attachment 81612
Patch v2

Fix style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354154</commentid>
    <comment_count>6</comment_count>
      <attachid>81612</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-02-19 07:28:05 -0800</bug_when>
    <thetext>Comment on attachment 81612
Patch v2

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

I&apos;m not familiar with CSS parser and selector.  However I set r- because of a failing test.

&gt; Source/WebCore/css/CSSParser.h:176
&gt; +        Vector&lt;OwnPtr&lt;CSSSelectorList&gt; &gt;* createFloatingSelectorList();
&gt; +        PassOwnPtr&lt;Vector&lt;OwnPtr&lt;CSSSelectorList&gt; &gt; &gt; sinkFloatingSelectorList(Vector&lt;OwnPtr&lt;CSSSelectorList&gt; &gt;*);

We had better have a typedef for Vector&lt;OwnPtr&lt;CSSSelectorList&gt;&gt;.  It would make the code simpler.

&gt; Source/WebCore/css/CSSStyleSelector.cpp:2368
&gt; +                if (simpleSelectorList-&gt;size() !=1)

Need a space before 1.

&gt; LayoutTests/fast/css/pseudo-any-expected.txt:80
&gt; +TEST COMPLETE
&gt; +FAIL document.defaultView.getComputedStyle(elhover, null).getPropertyValue(&apos;color&apos;) should be rgb(0, 128, 0). Was rgb(255, 0, 0).

There is a test after &quot;TEST COMPLETE&quot; and the test is failing.  They&apos;re bad.
We should use async script test.  Please look at some tests with &quot;jsTestIsAsync = true&quot;.

&gt; LayoutTests/fast/css/pseudo-any.html:110
&gt; +shouldBe(&quot;document.defaultView.getComputedStyle(el, null).getPropertyValue(&apos;color&apos;)&quot;, &quot;&apos;rgb(0, 128, 0)&apos;&quot;);

We had better introduce a function like getComputedColor(element).

&gt; LayoutTests/fast/css/pseudo-any.html:167
&gt; +if (window.layoutTestController) {
&gt; +	elhover = document.getElementById(&quot;span_5&quot;);
&gt; +	shouldBe(&quot;document.defaultView.getComputedStyle(elhover, null).getPropertyValue(&apos;color&apos;)&quot;, &quot;&apos;rgb(255, 0, 0)&apos;&quot;);
&gt; +	var targetElem = document.getElementById(&quot;p_5&quot;);
&gt; +	eventSender.mouseMoveTo(targetElem.offsetLeft + 1, targetElem.offsetTop + 1);
&gt; +    window.setTimeout(function() {
&gt; +    	shouldBe(&quot;document.defaultView.getComputedStyle(elhover, null).getPropertyValue(&apos;color&apos;)&quot;, &quot;&apos;rgb(0, 128, 0)&apos;&quot;);
&gt; +    	window.layoutTestController.notifyDone();
&gt; +    },50);

Indentation looks not good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363685</commentid>
    <comment_count>7</comment_count>
    <who name="Trevor Downs">cyberskull</who>
    <bug_when>2011-03-07 16:47:12 -0800</bug_when>
    <thetext>I&apos;d like to see the :any() selector extended to properties as well.

For example, I&apos;d like to simplify the following code:
&gt; div {
&gt; border: 1px solid black;
&gt; -webkit-border-radius: 1em;
&gt; -moz-border-radius: 1em;
&gt; -o-border-radius: 1em;
&gt; -ms-border-radius: 1em;
&gt; border-radius: 1em;
&gt; }

To something like this:
&gt; div {
&gt; border: 1px solid black;
&gt; :any(-webkit-, -moz-, -o-, -ms-, &apos;&apos;)border-radius: 1em;
&gt; }

or
&gt; div {
&gt; border: 1px solid black;
&gt; [-webkit-, -moz-, -o-, -ms-, &apos;&apos;]border-radius: 1em;
&gt; }

The last argument here is an empty string to make it just `border-radius`. Thus one line can stand in for the half dozen lines of css needed for compatibility of new features, and would simplify backwards compatibility as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369476</commentid>
    <comment_count>8</comment_count>
      <attachid>86131</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-03-17 20:11:48 -0700</bug_when>
    <thetext>Created attachment 86131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369501</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-17 22:32:45 -0700</bug_when>
    <thetext>Attachment 86131 did not pass style-queue:

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

Source/WebCore/css/CSSSelector.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 22 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>369510</commentid>
    <comment_count>10</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-03-17 22:54:34 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Source/WebCore/css/CSSSelector.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]

I&apos;m matching the code around it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370318</commentid>
    <comment_count>11</comment_count>
      <attachid>86131</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-03-21 02:25:21 -0700</bug_when>
    <thetext>Comment on attachment 86131
Patch

Looks generally good. 

You  will need to modify RuleSet::collectFeatures() and pals (in CSSStyleSelector.cpp) to scan the content of the :any selector lists too. Otherwise you get bugs at least with style sharing. r- for that.

As you note, you should (probably in a separate patch) eliminate CSSSelector::m_simpleSelector in favor of using m_selectorList.

Matching of these won&apos;t be very well optimized as neither the ancestor identifier filter or fastCheckSelector can be used with them. If they get popular we need to think of ways to optimize them.

(personally I don&apos;t think typedeffing  stuff like Vector&lt;OwnPtr&lt;CSSParserSelector&gt; &gt; is always helpful. It tends to make code more opaque)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371176</commentid>
    <comment_count>12</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-03-21 20:30:44 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 86131 [details])
&gt; Looks generally good. 

Thanks for the quick review!

&gt; You  will need to modify RuleSet::collectFeatures() and pals (in CSSStyleSelector.cpp) to scan the content of the :any selector lists too. Otherwise you get bugs at least with style sharing. r- for that.

Will fix.

&gt; As you note, you should (probably in a separate patch) eliminate CSSSelector::m_simpleSelector in favor of using m_selectorList.

Yup. Plan to do this immediately after landing this.

&gt; Matching of these won&apos;t be very well optimized as neither the ancestor identifier filter or fastCheckSelector can be used with them. If they get popular we need to think of ways to optimize them.

I&apos;d like to figure this out in a followup patch. Ideally :any should be no slower than the long-form version.

&gt; (personally I don&apos;t think typedeffing  stuff like Vector&lt;OwnPtr&lt;CSSParserSelector&gt; &gt; is always helpful. It tends to make code more opaque)

I agree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371184</commentid>
    <comment_count>13</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-03-21 20:52:16 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; You  will need to modify RuleSet::collectFeatures() and pals (in CSSStyleSelector.cpp) to scan the content of the :any selector lists too. Otherwise you get bugs at least with style sharing. r- for that.
&gt; 
&gt; Will fix.

Responded too quickly. I think the current patch does this. I do have at least one case testing style sharing in fast/css/pseudo-any.html (line 125). RuleSet::collectFeatures calls collectFeaturesFromList, which in turn calls collectFeaturesFromSelector, which is modified in this patch to handle :any selectors.

The part I&apos;m not totally sure about is whether I need to modify RuleSet::addRule to handle :any selectors. Right now they&apos;re get inserted into m_universalRules. So, collectFeaturesFromList does get called on them. What do you think? I guess this is the bit that needs figuring out to make fastCheckSelector work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371185</commentid>
    <comment_count>14</comment_count>
      <attachid>86131</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-03-21 20:52:39 -0700</bug_when>
    <thetext>Comment on attachment 86131
Patch

Marking for review again per the above comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371269</commentid>
    <comment_count>15</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-03-22 01:02:30 -0700</bug_when>
    <thetext>(In reply to comment #13)

&gt; Responded too quickly. I think the current patch does this. I do have at least one case testing style sharing in fast/css/pseudo-any.html (line 125). RuleSet::collectFeatures calls collectFeaturesFromList, which in turn calls collectFeaturesFromSelector, which is modified in this patch to handle :any selectors.
 
Ah, yes, you do. I totally didn&apos;t see that.

&gt; The part I&apos;m not totally sure about is whether I need to modify RuleSet::addRule to handle :any selectors. Right now they&apos;re get inserted into m_universalRules. So, collectFeaturesFromList does get called on them. What do you think? I guess this is the bit that needs figuring out to make fastCheckSelector work?

Getting inserted to m_universal rules list is bad for performance as they get compared against every element in the document. They should likely be inserted multiple times (if the topmost selector is :any) to all the correct more specific lists.

However, it is probably better to leave optimization for future patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371270</commentid>
    <comment_count>16</comment_count>
      <attachid>86131</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-03-22 01:02:46 -0700</bug_when>
    <thetext>Comment on attachment 86131
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371897</commentid>
    <comment_count>17</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-03-22 18:45:02 -0700</bug_when>
    <thetext>Committed r81742: &lt;http://trac.webkit.org/changeset/81742&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371920</commentid>
    <comment_count>18</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-03-22 19:36:59 -0700</bug_when>
    <thetext>The unknown-pseudo test fails on most of the Chrome bots. Can you take a look?

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;group=%40ToT%20-%20chromium.org&amp;tests=fast%2Fdom%2FSelectorAPI%2Funknown-pseudo.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371923</commentid>
    <comment_count>19</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-03-22 19:51:19 -0700</bug_when>
    <thetext>Looking</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371926</commentid>
    <comment_count>20</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-03-22 19:53:09 -0700</bug_when>
    <thetext>Another case where V8&apos;s more specific errors are different than JSC&apos;s. Sigh. I&apos;ll add new results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371935</commentid>
    <comment_count>21</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-03-22 20:11:28 -0700</bug_when>
    <thetext>Committed r81744: &lt;http://trac.webkit.org/changeset/81744&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371951</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-22 20:46:55 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/81742 might have broken SnowLeopard Intel Release (WebKit2 Tests)
The following tests are not passing:
fast/css/pseudo-any.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372700</commentid>
    <comment_count>23</comment_count>
    <who name="Masataka Yakura">myakura.web</who>
    <bug_when>2011-03-23 23:53:45 -0700</bug_when>
    <thetext>There&apos;s now an Editor&apos;s Draft of Selectors 4, introducing the :matches() pseudo-class which gives the same functionality as :any().

http://dev.w3.org/csswg/selectors4/#matches</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81611</attachid>
            <date>2011-02-08 01:04:02 -0800</date>
            <delta_ts>2011-02-08 01:16:14 -0800</delta_ts>
            <desc>patch v1</desc>
            <filename>patch38095v1.diff</filename>
            <type>text/plain</type>
            <size>43305</size>
            <attacher name="Rémi Zara">remi_zara</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTE0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDItMDcgIFLDqW1pIFph
cmEgIDxyZW1pLXphcmFAbWFjLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICB3ZWJraXQgc2hvdWxkIGltcGxlbWVudCAtbW96LWFueSBzZWxlY3Rv
ciAoYXMgLXdlYmtpdC1hbnkgb2J2aW91c2x5KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgwOTUKKworICAgICAgICBUZXN0OiBmYXN0L2Nzcy9wc2V1
ZG8tYW55Lmh0bWwKKworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6IGFkZCBydWxlcyB0byBw
YXJzZSA6LXdlYmtpdC1hbnkKKyAgICAgICAgKiBjc3MvQ1NTUGFnZVJ1bGUuY3BwOiBhZGQgaW5j
bHVkZSB0byBjb3BlIHdpdGggQ1NTU2VsZWN0b3JMaXN0IGNoYW5nZQorICAgICAgICAqIGNzcy9D
U1NQYXJzZXIuY3BwOiBkZWFsIHdpdGggc2ltcGxlIHNlbGVjdG9yIGxpc3RzCisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OmxleCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNy
ZWF0ZUZsb2F0aW5nU2VsZWN0b3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
c2lua0Zsb2F0aW5nU2VsZWN0b3JMaXN0KToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6Cisg
ICAgICAgICogY3NzL0NTU1BhcnNlclZhbHVlcy5oOiBhdWdtZW50IHdoYXQgd2FzIHVzZWQgZm9y
IDpub3QgdG8gaGFuZGxlIDotd2Via2l0LWFueSBtdWx0aXBsZQorICAgICAgICBhcmd1bWVudHMK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpzZXRTaW1wbGVTZWxlY3Rvckxp
c3QpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTZWxlY3Rvcjo6c3BlY2lmaWNpdHlGb3JPbmVTZWxlY3Rvcik6IHNwZWNpZmljaXR5IGlzIHRo
YXQgb2YgYSBwc2V1ZG8tY2xhc3MsCisgICAgICAgIGFzIGluIGdlY2tvLiBTaG91bGQgZml4IGlu
IGZvbGxvd3VwIGJ1ZworICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnBzZXVkb0lkKToK
KyAgICAgICAgKFdlYkNvcmU6Om5hbWVUb1BzZXVkb1R5cGVNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1NlbGVjdG9yOjpzZWxlY3RvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6
OnNldFNpbXBsZVNlbGVjdG9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6
aXNTaW1wbGUpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU2VsZWN0b3I6OnNpbXBsZVNlbGVjdG9yTGlzdCk6CisgICAgICAgICogY3NzL0NTU1Nl
bGVjdG9yTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6Om5leHQp
OiBtb3ZlIG5leHQgaGVyZSB0byBjb3BlIHdpdGggQ1NTU2VsZWN0b3IgZGVwZW5kZW5jeSBvbgor
ICAgICAgICBDU1NTZWxlY3Rvckxpc3QKKyAgICAgICAgKFdlYkNvcmU6OmZvckVhY2hUYWdTZWxl
Y3Rvcik6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlzdC5oOiBjb3BlIHdpdGggQ1NTU2Vs
ZWN0b3IgZGVwZW5kZW5jeSBvbiBDU1NTZWxlY3Rvckxpc3QKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IpOiBtYXRjaCA6LXdlYmtpdC1hbnkoKQorICAg
ICAgICAoV2ViQ29yZTo6Y29sbGVjdElkc0FuZFNpYmxpbmdSdWxlc0Zyb21MaXN0KToKKyAgICAg
ICAgKiBjc3MvdG9rZW5pemVyLmZsZXg6CisKIDIwMTEtMDItMDcgIENyaXMgTmVja2FyICA8Y2Ru
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKaWFuIExpLgpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhbW1hci55CShyZXZpc2lvbiA3NzkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKICAgICBDU1NSdWxlTGlzdCogcnVsZUxpc3Q7CiAgICAgQ1NTUGFy
c2VyU2VsZWN0b3IqIHNlbGVjdG9yOwogICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+ID4qIHNlbGVjdG9yTGlzdDsKKyAgICBWZWN0b3I8T3duUHRyPENTU1NlbGVjdG9yTGlzdD4g
Piogc2ltcGxlU2VsZWN0b3JMaXN0OwogICAgIENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIG1h
cmdpbkJveDsKICAgICBDU1NTZWxlY3Rvcjo6UmVsYXRpb24gcmVsYXRpb247CiAgICAgTWVkaWFM
aXN0KiBtZWRpYUxpc3Q7CkBAIC0xOTAsNiArMTkxLDcgQEAgc3RhdGljIGludCBjc3N5eWxleChZ
WVNUWVBFKiB5eWx2YWwsIHZvaQogJXRva2VuIDxzdHJpbmc+IFVSSQogJXRva2VuIDxzdHJpbmc+
IEZVTkNUSU9OCiAldG9rZW4gPHN0cmluZz4gTk9URlVOQ1RJT04KKyV0b2tlbiA8c3RyaW5nPiBB
TllGVU5DVElPTgogCiAldG9rZW4gPHN0cmluZz4gVU5JQ09ERVJBTkdFCiAKQEAgLTI0Nyw2ICsy
NDksNyBAQCBzdGF0aWMgaW50IGNzc3l5bGV4KFlZU1RZUEUqIHl5bHZhbCwgdm9pCiAldHlwZSA8
c2VsZWN0b3I+IHNpbXBsZV9zZWxlY3RvcgogJXR5cGUgPHNlbGVjdG9yPiBzZWxlY3RvcgogJXR5
cGUgPHNlbGVjdG9yTGlzdD4gc2VsZWN0b3JfbGlzdAorJXR5cGUgPHNpbXBsZVNlbGVjdG9yTGlz
dD4gc2ltcGxlX3NlbGVjdG9yX2xpc3QKICV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3Jfd2l0aF90
cmFpbGluZ193aGl0ZXNwYWNlCiAldHlwZSA8c2VsZWN0b3I+IGNsYXNzCiAldHlwZSA8c2VsZWN0
b3I+IGF0dHJpYgpAQCAtMTIxMSwxMSArMTIxNCw1OSBAQCBwc2V1ZG86CiAgICAgICAgICAgICBD
U1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICAg
ICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CiAgICAgICAgICAgICAkJC0+c2V0
TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLSAgICAgICAgICAgICQkLT5zZXRTaW1w
bGVTZWxlY3RvcihwLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkNCktPnJlbGVhc2VTZWxlY3Rvcigp
KTsKKyAgICAgICAgICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gc2VsZWN0
b3JWZWN0b3I7CisgICAgICAgICAgICBzZWxlY3RvclZlY3Rvci5hcHBlbmQocC0+c2lua0Zsb2F0
aW5nU2VsZWN0b3IoJDQpKTsKKyAgICAgICAgICAgIE93blB0cjxDU1NTZWxlY3Rvckxpc3Q+IHNl
bGVjdG9yTGlzdCA9IGFkb3B0UHRyKG5ldyBDU1NTZWxlY3Rvckxpc3QpOworICAgICAgICAgICAg
c2VsZWN0b3JMaXN0LT5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yKTsKKyAgICAg
ICAgICAgIFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3JMaXN0PiA+KiBzaW1wbGVTZWxlY3Rvckxp
c3QgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yTGlzdCgpOworICAgICAgICAgICAgc2ltcGxl
U2VsZWN0b3JMaXN0LT5hcHBlbmQoc2VsZWN0b3JMaXN0LnJlbGVhc2UoKSk7CisgICAgICAgICAg
ICAkJC0+c2V0U2ltcGxlU2VsZWN0b3JMaXN0KHAtPnNpbmtGbG9hdGluZ1NlbGVjdG9yTGlzdChz
aW1wbGVTZWxlY3Rvckxpc3QpKTsKICAgICAgICAgICAgICQyLmxvd2VyKCk7CiAgICAgICAgICAg
ICAkJC0+c2V0VmFsdWUoJDIpOwogICAgICAgICB9CiAgICAgfQorICAgIC8vIHVzZWQgYnkgOi13
ZWJraXQtYW55CisgICAgfCAnOicgQU5ZRlVOQ1RJT04gbWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVj
dG9yX2xpc3QgbWF5YmVfc3BhY2UgJyknIHsKKyAgICAgICAgaWYgKCEkNCkKKyAgICAgICAgICAg
ICQkID0gMDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0
aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOworICAgICAgICAgICAgJCQgPSBwLT5jcmVhdGVG
bG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzKTsKKyAgICAgICAgICAgICQkLT5zZXRTaW1wbGVTZWxlY3Rvckxpc3QocC0+
c2lua0Zsb2F0aW5nU2VsZWN0b3JMaXN0KCQ0KSk7CisgICAgICAgICAgICAkMi5sb3dlcigpOwor
ICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKKyAgICAgICAgfQorICAgIH0KKyAgOworCitz
aW1wbGVfc2VsZWN0b3JfbGlzdDoKKyAgICBzaW1wbGVfc2VsZWN0b3IgeworICAgICAgICBpZiAo
ISQxKQorICAgICAgICAgICAgJCQgPSAwOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIENT
U1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgICAg
ICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3JMaXN0KCk7CisgICAgICAgICAgICBPd25Q
dHI8Q1NTU2VsZWN0b3JMaXN0PiBzZWxlY3Rvckxpc3QgPSBhZG9wdFB0cihuZXcgQ1NTU2VsZWN0
b3JMaXN0KTsKKyAgICAgICAgICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4g
c2VsZWN0b3JWZWN0b3I7CisgICAgICAgICAgICBzZWxlY3RvclZlY3Rvci5hcHBlbmQocC0+c2lu
a0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKKyAgICAgICAgICAgIHNlbGVjdG9yTGlzdC0+YWRvcHRT
ZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7CisgICAgICAgICAgICAkJC0+YXBwZW5kKHNl
bGVjdG9yTGlzdC5yZWxlYXNlKCkpOworICAgICAgICB9CisgICAgfQorICAgIHwgc2ltcGxlX3Nl
bGVjdG9yX2xpc3QgbWF5YmVfc3BhY2UgJywnICBtYXliZV9zcGFjZSBzaW1wbGVfc2VsZWN0b3Ig
eworICAgICAgICBpZiAoISQxIHx8ICEkNSkKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIq
PihwYXJzZXIpOworICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgIE93blB0cjxDU1NT
ZWxlY3Rvckxpc3Q+IHNlbGVjdG9yTGlzdCA9IGFkb3B0UHRyKG5ldyBDU1NTZWxlY3Rvckxpc3Qp
OworICAgICAgICAgICAgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiBzZWxlY3Rv
clZlY3RvcjsKKyAgICAgICAgICAgIHNlbGVjdG9yVmVjdG9yLmFwcGVuZChwLT5zaW5rRmxvYXRp
bmdTZWxlY3RvcigkNSkpOworICAgICAgICAgICAgc2VsZWN0b3JMaXN0LT5hZG9wdFNlbGVjdG9y
VmVjdG9yKHNlbGVjdG9yVmVjdG9yKTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQoc2VsZWN0b3JM
aXN0LnJlbGVhc2UoKSk7CisgICAgICAgIH0KKyAgICB9CiAgIDsKIAogZGVjbGFyYXRpb25fbGlz
dDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmNwcAkocmV2aXNpb24gNzc5MTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MSw2ICsyMSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NQYWdlUnVs
ZS5oIgorI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCiAKICNpbmNsdWRlICJDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiA3NzkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTA1LDYgKzU1MDUsNyBAQCBpbnQgQ1NT
UGFyc2VyOjpsZXgodm9pZCogeXlsdmFsV2l0aG91dFR5CiAgICAgY2FzZSBVTklDT0RFUkFOR0U6
CiAgICAgY2FzZSBGVU5DVElPTjoKICAgICBjYXNlIE5PVEZVTkNUSU9OOgorICAgIGNhc2UgQU5Z
RlVOQ1RJT046CiAgICAgICAgIHl5bHZhbC0+c3RyaW5nLmNoYXJhY3RlcnMgPSB0OwogICAgICAg
ICB5eWx2YWwtPnN0cmluZy5sZW5ndGggPSBsZW5ndGg7CiAgICAgICAgIGJyZWFrOwpAQCAtNTcx
Nyw2ICs1NzE4LDE4IEBAIFBhc3NPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlcjoK
ICAgICByZXR1cm4gYWRvcHRQdHIoc2VsZWN0b3IpOwogfQogCitWZWN0b3I8T3duUHRyPENTU1Nl
bGVjdG9yTGlzdD4gPiogQ1NTUGFyc2VyOjpjcmVhdGVGbG9hdGluZ1NlbGVjdG9yTGlzdCgpCit7
CisgICAgbV9mbG9hdGluZ1NlbGVjdG9yTGlzdCA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8T3duUHRy
PENTU1NlbGVjdG9yTGlzdD4gPik7CisgICAgcmV0dXJuIG1fZmxvYXRpbmdTZWxlY3Rvckxpc3Qu
Z2V0KCk7Cit9CisKK1Bhc3NPd25QdHI8VmVjdG9yPE93blB0cjxDU1NTZWxlY3Rvckxpc3Q+ID4g
PiBDU1NQYXJzZXI6OnNpbmtGbG9hdGluZ1NlbGVjdG9yTGlzdChWZWN0b3I8T3duUHRyPENTU1Nl
bGVjdG9yTGlzdD4gPiogc2VsZWN0b3JMaXN0KQoreworICAgIEFTU0VSVF9VTlVTRUQoc2VsZWN0
b3JMaXN0LCBzZWxlY3Rvckxpc3QgPT0gbV9mbG9hdGluZ1NlbGVjdG9yTGlzdCk7CisgICAgcmV0
dXJuIG1fZmxvYXRpbmdTZWxlY3Rvckxpc3QucmVsZWFzZSgpOworfQorCiBDU1NQYXJzZXJWYWx1
ZUxpc3QqIENTU1BhcnNlcjo6Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKQogewogICAgIENTU1Bh
cnNlclZhbHVlTGlzdCogbGlzdCA9IG5ldyBDU1NQYXJzZXJWYWx1ZUxpc3Q7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5oCShyZXZpc2lvbiA3NzkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDYgKzE3Miw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICBDU1NQYXJzZXJTZWxlY3RvciogY3JlYXRlRmxvYXRpbmdTZWxl
Y3RvcigpOwogICAgICAgICBQYXNzT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBzaW5rRmxvYXRp
bmdTZWxlY3RvcihDU1NQYXJzZXJTZWxlY3RvciopOworICAgICAgICBWZWN0b3I8T3duUHRyPENT
U1NlbGVjdG9yTGlzdD4gPiogY3JlYXRlRmxvYXRpbmdTZWxlY3Rvckxpc3QoKTsKKyAgICAgICAg
UGFzc093blB0cjxWZWN0b3I8T3duUHRyPENTU1NlbGVjdG9yTGlzdD4gPiA+IHNpbmtGbG9hdGlu
Z1NlbGVjdG9yTGlzdChWZWN0b3I8T3duUHRyPENTU1NlbGVjdG9yTGlzdD4gPiopOwogCiAgICAg
ICAgIENTU1BhcnNlclZhbHVlTGlzdCogY3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsKICAgICAg
ICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBzaW5rRmxvYXRpbmdWYWx1ZUxpc3QoQ1NTUGFyc2VyVmFs
dWVMaXN0Kik7CkBAIC0zMDMsNiArMzA1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBWZWN0b3I8UmVmUHRyPFN0eWxlQmFzZT4gPiBtX3BhcnNlZFN0eWxlT2JqZWN0czsKICAgICAg
ICAgVmVjdG9yPFJlZlB0cjxDU1NSdWxlTGlzdD4gPiBtX3BhcnNlZFJ1bGVMaXN0czsKICAgICAg
ICAgSGFzaFNldDxDU1NQYXJzZXJTZWxlY3Rvcio+IG1fZmxvYXRpbmdTZWxlY3RvcnM7CisgICAg
ICAgIE93blB0cjxWZWN0b3I8T3duUHRyPENTU1NlbGVjdG9yTGlzdD4gPiA+IG1fZmxvYXRpbmdT
ZWxlY3Rvckxpc3Q7CiAgICAgICAgIEhhc2hTZXQ8Q1NTUGFyc2VyVmFsdWVMaXN0Kj4gbV9mbG9h
dGluZ1ZhbHVlTGlzdHM7CiAgICAgICAgIEhhc2hTZXQ8Q1NTUGFyc2VyRnVuY3Rpb24qPiBtX2Zs
b2F0aW5nRnVuY3Rpb25zOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFs
dWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5o
CShyZXZpc2lvbiA3NzkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIHsgbV9zZWxlY3Rvci0+c2V0VmFsdWUo
dmFsdWUpOyB9CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFs
dWUpIHsgbV9zZWxlY3Rvci0+c2V0QXR0cmlidXRlKHZhbHVlKTsgfQogICAgIHZvaWQgc2V0QXJn
dW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5zZXRBcmd1bWVu
dCh2YWx1ZSk7IH0KLSAgICB2b2lkIHNldFNpbXBsZVNlbGVjdG9yKFBhc3NPd25QdHI8Q1NTU2Vs
ZWN0b3I+IHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldFNpbXBsZVNlbGVjdG9yKHZhbHVlKTsgfQor
ICAgIHZvaWQgc2V0U2ltcGxlU2VsZWN0b3JMaXN0KFBhc3NPd25QdHI8VmVjdG9yPE93blB0cjxD
U1NTZWxlY3Rvckxpc3Q+ID4gPiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5zZXRTaW1wbGVTZWxlY3Rv
ckxpc3QodmFsdWUpOyB9CiAgICAgdm9pZCBzZXRNYXRjaChDU1NTZWxlY3Rvcjo6TWF0Y2ggdmFs
dWUpIHsgbV9zZWxlY3Rvci0+bV9tYXRjaCA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXRSZWxhdGlv
bihDU1NTZWxlY3Rvcjo6UmVsYXRpb24gdmFsdWUpIHsgbV9zZWxlY3Rvci0+bV9yZWxhdGlvbiA9
IHZhbHVlOyB9CiAgICAgdm9pZCBzZXRGb3JQYWdlKCkgeyBtX3NlbGVjdG9yLT5zZXRGb3JQYWdl
KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkocmV2aXNpb24gNzc5MTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NTZWxl
Y3Rvci5oIgorI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogCiAjaW5jbHVkZSAiQ1NTT01V
dGlscy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNzgsOSArNzksMTUgQEAgaW5saW5l
IHVuc2lnbmVkIENTU1NlbGVjdG9yOjpzcGVjaWZpY2l0eQogICAgIGNhc2UgQ29udGFpbjoKICAg
ICBjYXNlIEJlZ2luOgogICAgIGNhc2UgRW5kOgotICAgICAgICBpZiAocHNldWRvVHlwZSgpID09
IFBzZXVkb05vdCAmJiBzaW1wbGVTZWxlY3RvcigpKQotICAgICAgICAgICAgcyArPSBzaW1wbGVT
ZWxlY3RvcigpLT5zcGVjaWZpY2l0eUZvck9uZVNlbGVjdG9yKCk7Ci0gICAgICAgIGVsc2UKKyAg
ICAgICAgaWYgKHNpbXBsZVNlbGVjdG9yTGlzdCgpKSB7CisgICAgICAgICAgICBpZiAocHNldWRv
VHlwZSgpID09IFBzZXVkb05vdCkgeworICAgICAgICAgICAgICAgIEFTU0VSVChzaW1wbGVTZWxl
Y3Rvckxpc3QoKS0+c2l6ZSgpID09IDEpOworICAgICAgICAgICAgICAgIHMgKz0gc2ltcGxlU2Vs
ZWN0b3JMaXN0KCktPmZpcnN0KCktPmZpcnN0KCktPnNwZWNpZmljaXR5Rm9yT25lU2VsZWN0b3Io
KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocHNldWRvVHlwZSgpID09IFBzZXVkb0FueSkgewor
ICAgICAgICAgICAgICAgIC8qIEZJWE1FIHNob3VsZCByZXR1cm4gdGhlIGhpZ2hlc3Qgc3BlY2l0
aXR5IG9mIG1hdGNoaW5nIHNlbGVjdG9yICovCisgICAgICAgICAgICAgICAgcyArPSAweDEwMDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzICs9IDB4MTAwOwog
ICAgIGNhc2UgTm9uZToKICAgICAgICAgYnJlYWs7CkBAIC0yMjQsNiArMjMxLDcgQEAgUHNldWRv
SWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVkb1R5cAogICAgIGNhc2UgUHNldWRvTGluazoK
ICAgICBjYXNlIFBzZXVkb1Zpc2l0ZWQ6CiAgICAgY2FzZSBQc2V1ZG9BbnlMaW5rOgorICAgIGNh
c2UgUHNldWRvQW55OgogICAgIGNhc2UgUHNldWRvQXV0b2ZpbGw6CiAgICAgY2FzZSBQc2V1ZG9I
b3ZlcjoKICAgICBjYXNlIFBzZXVkb0RyYWc6CkBAIC0yNzgsNiArMjg2LDcgQEAgc3RhdGljIEhh
c2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbAogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBhY3RpdmUsICgiYWN0aXZlIikpOwogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBhZnRlciwgKCJhZnRlciIpKTsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgYW55TGluaywgKCItd2Via2l0LWFueS1saW5rIikpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBhbnksICgiLXdlYmtpdC1hbnkoIikpOwog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBhdXRvZmlsbCwgKCItd2Via2l0
LWF1dG9maWxsIikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBiZWZv
cmUsICgiYmVmb3JlIikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBj
aGVja2VkLCAoImNoZWNrZWQiKSk7CkBAIC0zODIsNiArMzkxLDcgQEAgc3RhdGljIEhhc2hNYXA8
QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbAogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQo
YWN0aXZlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0FjdGl2ZSk7CiAgICAgICAgIG5hbWVU
b1BzZXVkb1R5cGUtPnNldChhZnRlci5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9BZnRlcik7
CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChhbnlMaW5rLmltcGwoKSwgQ1NTU2VsZWN0
b3I6OlBzZXVkb0FueUxpbmspOworICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoYW55Lmlt
cGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0FueSk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUt
PnNldChhdXRvZmlsbC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9BdXRvZmlsbCk7CiAgICAg
ICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChiZWZvcmUuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNl
dWRvQmVmb3JlKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGNoZWNrZWQuaW1wbCgp
LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2hlY2tlZCk7CkBAIC01NTgsNiArNTY4LDcgQEAgdm9pZCBD
U1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjbwogICAgIGNhc2UgUHNldWRvTGluazoK
ICAgICBjYXNlIFBzZXVkb1Zpc2l0ZWQ6CiAgICAgY2FzZSBQc2V1ZG9BbnlMaW5rOgorICAgIGNh
c2UgUHNldWRvQW55OgogICAgIGNhc2UgUHNldWRvQXV0b2ZpbGw6CiAgICAgY2FzZSBQc2V1ZG9I
b3ZlcjoKICAgICBjYXNlIFBzZXVkb0RyYWc6CkBAIC02NjgsOSArNjc5LDE3IEBAIFN0cmluZyBD
U1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KCkgY29uc3QKICAgICAgICAgfSBlbHNlIGlmIChjcy0+
bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MgfHwgY3MtPm1fbWF0Y2ggPT0gQ1NT
U2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzcykgewogICAgICAgICAgICAgc3RyICs9ICI6IjsKICAg
ICAgICAgICAgIHN0ciArPSBjcy0+dmFsdWUoKTsKLSAgICAgICAgICAgIGlmIChjcy0+cHNldWRv
VHlwZSgpID09IFBzZXVkb05vdCkgewotICAgICAgICAgICAgICAgIGlmIChDU1NTZWxlY3Rvciog
c3ViU2VsID0gY3MtPnNpbXBsZVNlbGVjdG9yKCkpCi0gICAgICAgICAgICAgICAgICAgIHN0ciAr
PSBzdWJTZWwtPnNlbGVjdG9yVGV4dCgpOworICAgICAgICAgICAgaWYgKGNzLT5wc2V1ZG9UeXBl
KCkgPT0gUHNldWRvTm90IHx8IGNzLT5wc2V1ZG9UeXBlKCkgPT0gUHNldWRvQW55KSB7CisgICAg
ICAgICAgICAgICAgaWYgKGNzLT5zaW1wbGVTZWxlY3Rvckxpc3QoKSkgeworICAgICAgICAgICAg
ICAgICAgICBib29sIGZpcnN0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChWZWN0
b3I8T3duUHRyPENTU1NlbGVjdG9yTGlzdD4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjcy0+c2lt
cGxlU2VsZWN0b3JMaXN0KCktPmJlZ2luKCk7IGl0ICE9IGNzLT5zaW1wbGVTZWxlY3Rvckxpc3Qo
KS0+ZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmlyc3QpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gIiwiOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ciArPSBpdC0+Z2V0KCktPmZpcnN0KCktPnNlbGVjdG9yVGV4
dCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIHN0ciArPSAiKSI7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNzLT5wc2V1ZG9UeXBl
KCkgPT0gUHNldWRvTGFuZwogICAgICAgICAgICAgICAgICAgICB8fCBjcy0+cHNldWRvVHlwZSgp
ID09IFBzZXVkb050aENoaWxkCkBAIC03NjcsMTAgKzc4NiwxMCBAQCB2b2lkIENTU1NlbGVjdG9y
OjpzZXRBcmd1bWVudChjb25zdCBBdG9tCiAgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fYXJndW1l
bnQgPSB2YWx1ZTsgCiB9CiAKLXZvaWQgQ1NTU2VsZWN0b3I6OnNldFNpbXBsZVNlbGVjdG9yKFBh
c3NPd25QdHI8Q1NTU2VsZWN0b3I+IHZhbHVlKQordm9pZCBDU1NTZWxlY3Rvcjo6c2V0U2ltcGxl
U2VsZWN0b3JMaXN0KFBhc3NPd25QdHI8VmVjdG9yPE93blB0cjxDU1NTZWxlY3Rvckxpc3Q+ID4g
PiB2YWx1ZSkKIHsKICAgICBjcmVhdGVSYXJlRGF0YSgpOyAKLSAgICBtX2RhdGEubV9yYXJlRGF0
YS0+bV9zaW1wbGVTZWxlY3RvciA9IHZhbHVlOyAKKyAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9z
aW1wbGVTZWxlY3Rvckxpc3QgPSB2YWx1ZTsgCiB9CiAKIGJvb2wgQ1NTU2VsZWN0b3I6OnBhcnNl
TnRoKCkKQEAgLTc5MSw3ICs4MTAsNyBAQCBib29sIENTU1NlbGVjdG9yOjptYXRjaE50aChpbnQg
Y291bnQpCiAKIGJvb2wgQ1NTU2VsZWN0b3I6OmlzU2ltcGxlKCkgY29uc3QKIHsKLSAgICBpZiAo
c2ltcGxlU2VsZWN0b3IoKSB8fCB0YWdIaXN0b3J5KCkgfHwgbWF0Y2hlc1BzZXVkb0VsZW1lbnQo
KSkKKyAgICBpZiAoc2ltcGxlU2VsZWN0b3JMaXN0KCkgfHwgdGFnSGlzdG9yeSgpIHx8IG1hdGNo
ZXNQc2V1ZG9FbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGludCBudW1D
b25kaXRpb25zID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCShyZXZpc2lvbiA3
NzkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMiw2ICsyMiw3IEBACiAjaWZuZGVmIENTU1NlbGVjdG9yX2gKICNkZWZpbmUgQ1NTU2Vs
ZWN0b3JfaAogCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAiUXVhbGlm
aWVkTmFtZS5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CkBAIC0xMjUsNiArMTI2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgUHNldWRvTGluaywKICAgICAgICAgICAgIFBzZXVkb1Zpc2l0ZWQsCiAg
ICAgICAgICAgICBQc2V1ZG9BbnlMaW5rLAorICAgICAgICAgICAgUHNldWRvQW55LAogICAgICAg
ICAgICAgUHNldWRvQXV0b2ZpbGwsCiAgICAgICAgICAgICBQc2V1ZG9Ib3ZlciwKICAgICAgICAg
ICAgIFBzZXVkb0RyYWcsCkBAIC0yNDgsMTMgKzI1MCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiAqcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBBdG9taWNTdHJpbmcqPihtX2hhc1JhcmVEYXRhID8gJm1fZGF0
YS5tX3JhcmVEYXRhLT5tX3ZhbHVlIDogJm1fZGF0YS5tX3ZhbHVlKTsgfQogICAgICAgICBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUoKSBjb25zdDsKICAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBhcmd1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEu
bV9yYXJlRGF0YS0+bV9hcmd1bWVudCA6IG51bGxBdG9tOyB9Ci0gICAgICAgIENTU1NlbGVjdG9y
KiBzaW1wbGVTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEu
bV9yYXJlRGF0YS0+bV9zaW1wbGVTZWxlY3Rvci5nZXQoKSA6IDA7IH0KKyAgICAgICAgVmVjdG9y
PE93blB0cjxDU1NTZWxlY3Rvckxpc3Q+ID4qIHNpbXBsZVNlbGVjdG9yTGlzdCgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9yYXJlRGF0YS0+bV9zaW1wbGVTZWxlY3Rv
ckxpc3QuZ2V0KCkgOiAwOyB9CiAgICAgICAgIAogICAgICAgICB2b2lkIHNldFRhZyhjb25zdCBR
dWFsaWZpZWROYW1lJiB2YWx1ZSkgeyBtX3RhZyA9IHZhbHVlOyB9CiAgICAgICAgIHZvaWQgc2V0
VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgICAgIHZvaWQgc2V0QXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICAgICAgdm9pZCBzZXRBcmd1bWVudChjb25zdCBBdG9t
aWNTdHJpbmcmKTsKLSAgICAgICAgdm9pZCBzZXRTaW1wbGVTZWxlY3RvcihQYXNzT3duUHRyPENT
U1NlbGVjdG9yPik7CisgICAgICAgIHZvaWQgc2V0U2ltcGxlU2VsZWN0b3JMaXN0KFBhc3NPd25Q
dHI8VmVjdG9yPE93blB0cjxDU1NTZWxlY3Rvckxpc3Q+ID4gPik7CiAgICAgICAgIAogICAgICAg
ICBib29sIHBhcnNlTnRoKCk7CiAgICAgICAgIGJvb2wgbWF0Y2hOdGgoaW50IGNvdW50KTsKQEAg
LTMxMyw3ICszMTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBBdG9taWNT
dHJpbmdJbXBsKiBtX3ZhbHVlOyAvLyBQbGFpbiBwb2ludGVyIHRvIGtlZXAgdGhpbmdzIHVuaWZv
cm0gd2l0aCB0aGUgdW5pb24uCiAgICAgICAgICAgICBpbnQgbV9hOyAvLyBVc2VkIGZvciA6bnRo
LSoKICAgICAgICAgICAgIGludCBtX2I7IC8vIFVzZWQgZm9yIDpudGgtKgotICAgICAgICAgICAg
T3duUHRyPENTU1NlbGVjdG9yPiBtX3NpbXBsZVNlbGVjdG9yOyAvLyBVc2VkIGZvciA6bm90Lgor
ICAgICAgICAgICAgT3duUHRyPFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3JMaXN0PiA+ID4gbV9z
aW1wbGVTZWxlY3Rvckxpc3Q7IC8vIFVzZWQgZm9yIDpub3QgYW5kIDotd2Via2l0LWFueS4KICAg
ICAgICAgICAgIFF1YWxpZmllZE5hbWUgbV9hdHRyaWJ1dGU7IC8vIHVzZWQgZm9yIGF0dHJpYnV0
ZSBzZWxlY3RvcgogICAgICAgICAgICAgQXRvbWljU3RyaW5nIG1fYXJndW1lbnQ7IC8vIFVzZWQg
Zm9yIDpjb250YWlucywgOmxhbmcgYW5kIDpudGgtKgogICAgICAgICB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAJKHJldmlzaW9uIDc3OTE0KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYg
KzI1LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTU2VsZWN0
b3IuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKIAogI2luY2x1ZGUgIkNTU1BhcnNl
clZhbHVlcy5oIgpAQCAtODAsNiArODEsMTUgQEAgdm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmFkb3B0
U2VsZWN0b3JWZWN0bwogICAgIHNlbGVjdG9yVmVjdG9yLnNocmluaygwKTsKIH0KIAorQ1NTU2Vs
ZWN0b3IqIENTU1NlbGVjdG9yTGlzdDo6bmV4dChDU1NTZWxlY3RvciogY3VycmVudCkKK3sKKyAg
ICAvLyBTa2lwIHN1YnBhcnRzIG9mIGNvbXBvdW5kIHNlbGVjdG9ycy4KKyAgICB3aGlsZSAoIWN1
cnJlbnQtPmlzTGFzdEluVGFnSGlzdG9yeSgpKQorICAgICAgICBjdXJyZW50Kys7CisgICAgcmV0
dXJuIGN1cnJlbnQtPmlzTGFzdEluU2VsZWN0b3JMaXN0KCkgPyAwIDogY3VycmVudCArIDE7Cit9
CisKKwogdm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmRlbGV0ZVNlbGVjdG9ycygpCiB7CiAgICAgaWYg
KCFtX3NlbGVjdG9yQXJyYXkpCkBAIC0xMTQsOSArMTI0LDExIEBAIHN0YXRpYyBib29sIGZvckVh
Y2hUYWdTZWxlY3RvcihGdW5jdG9yJiAKICAgICBkbyB7CiAgICAgICAgIGlmIChmdW5jdG9yKHNl
bGVjdG9yKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoQ1NTU2VsZWN0
b3IqIHNpbXBsZVNlbGVjdG9yID0gc2VsZWN0b3ItPnNpbXBsZVNlbGVjdG9yKCkpIHsKLSAgICAg
ICAgICAgIGlmIChmb3JFYWNoVGFnU2VsZWN0b3IoZnVuY3Rvciwgc2ltcGxlU2VsZWN0b3IpKQot
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoVmVjdG9yPE93blB0cjxD
U1NTZWxlY3Rvckxpc3Q+ID4qIHNpbXBsZVNlbGVjdG9yTGlzdCA9IHNlbGVjdG9yLT5zaW1wbGVT
ZWxlY3Rvckxpc3QoKSkgeworICAgICAgICAgICAgZm9yIChWZWN0b3I8T3duUHRyPENTU1NlbGVj
dG9yTGlzdD4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzaW1wbGVTZWxlY3Rvckxpc3QtPmJlZ2lu
KCk7IGl0ICE9IHNpbXBsZVNlbGVjdG9yTGlzdC0+ZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoZm9yRWFjaFRhZ1NlbGVjdG9yKGZ1bmN0b3IsIGl0LT5nZXQoKS0+Zmlyc3QoKSkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfSB3aGlsZSAoKHNlbGVjdG9yID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCShyZXZpc2lvbiA3NzkxNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsMTEgKzI2LDE0IEBACiAjaWZuZGVmIENTU1NlbGVjdG9yTGlzdF9oCiAjZGVmaW5lIENT
U1NlbGVjdG9yTGlzdF9oCiAKLSNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgorI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIENTU1BhcnNlclNl
bGVjdG9yOworY2xhc3MgQ1NTU2VsZWN0b3I7CiAgICAgCiBjbGFzcyBDU1NTZWxlY3Rvckxpc3Qg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENTU1NlbGVjdG9yTGlzdCk7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtNTYsMTQgKzU5LDYgQEAgcHJpdmF0ZToKICAgICBDU1NTZWxlY3Rv
ciogbV9zZWxlY3RvckFycmF5OwogfTsKIAotaW5saW5lIENTU1NlbGVjdG9yKiBDU1NTZWxlY3Rv
ckxpc3Q6Om5leHQoQ1NTU2VsZWN0b3IqIGN1cnJlbnQpCi17Ci0gICAgLy8gU2tpcCBzdWJwYXJ0
cyBvZiBjb21wb3VuZCBzZWxlY3RvcnMuCi0gICAgd2hpbGUgKCFjdXJyZW50LT5pc0xhc3RJblRh
Z0hpc3RvcnkoKSkKLSAgICAgICAgY3VycmVudCsrOwotICAgIHJldHVybiBjdXJyZW50LT5pc0xh
c3RJblNlbGVjdG9yTGlzdCgpID8gMCA6IGN1cnJlbnQgKyAxOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBDU1NTZWxlY3Rvckxpc3RfaApJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNzc5MTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNjQs
MTQgKzIzNjQsMzMgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6Ogog
ICAgICAgICAvLyBIYW5kbGUgOm5vdCB1cCBmcm9udC4KICAgICAgICAgaWYgKHNlbC0+cHNldWRv
VHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Ob3QpIHsKICAgICAgICAgICAgIC8vIGNoZWNr
IHRoZSBzaW1wbGUgc2VsZWN0b3IKLSAgICAgICAgICAgIGZvciAoQ1NTU2VsZWN0b3IqIHN1YlNl
bCA9IHNlbC0+c2ltcGxlU2VsZWN0b3IoKTsgc3ViU2VsOyBzdWJTZWwgPSBzdWJTZWwtPnRhZ0hp
c3RvcnkoKSkgewotICAgICAgICAgICAgICAgIC8vIDpub3QgY2Fubm90IG5lc3QuIEkgZG9uJ3Qg
cmVhbGx5IGtub3cgd2h5IHRoaXMgaXMgYQotICAgICAgICAgICAgICAgIC8vIHJlc3RyaWN0aW9u
IGluIENTUzMsIGJ1dCBpdCBpcywgc28gbGV0J3MgaG9ub3IgaXQuCi0gICAgICAgICAgICAgICAg
Ly8gdGhlIHBhcnNlciBlbmZvcmNlcyB0aGF0IHRoaXMgbmV2ZXIgb2NjdXJzCi0gICAgICAgICAg
ICAgICAgQVNTRVJUKCFzdWJTZWwtPnNpbXBsZVNlbGVjdG9yKCkpOworICAgICAgICAgICAgaWYg
KFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3JMaXN0PiA+KiBzaW1wbGVTZWxlY3Rvckxpc3QgPSBz
ZWwtPnNpbXBsZVNlbGVjdG9yTGlzdCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHNpbXBsZVNl
bGVjdG9yTGlzdC0+c2l6ZSgpICE9MSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAoQ1NTU2VsZWN0b3Iq
IHN1YlNlbCA9IHNpbXBsZVNlbGVjdG9yTGlzdC0+Zmlyc3QoKS5nZXQoKS0+Zmlyc3QoKTsgc3Vi
U2VsOyBzdWJTZWwgPSBzdWJTZWwtPnRhZ0hpc3RvcnkoKSkgeworICAgICAgICAgICAgICAgICAg
ICAvLyA6bm90IGNhbm5vdCBuZXN0LiBJIGRvbid0IHJlYWxseSBrbm93IHdoeSB0aGlzIGlzIGEK
KyAgICAgICAgICAgICAgICAgICAgLy8gcmVzdHJpY3Rpb24gaW4gQ1NTMywgYnV0IGl0IGlzLCBz
byBsZXQncyBob25vciBpdC4KKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHBhcnNlciBlbmZv
cmNlcyB0aGF0IHRoaXMgbmV2ZXIgb2NjdXJzCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCgh
c3ViU2VsLT5zaW1wbGVTZWxlY3Rvckxpc3QoKSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoIWNo
ZWNrT25lU2VsZWN0b3Ioc3ViU2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCB0
cnVlLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNoZWNrT25lU2VsZWN0
b3Ioc3ViU2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCB0cnVlLCBlbGVtZW50
U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZSBpZiAoc2VsLT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0FueSkgeworICAg
ICAgICAgICAgaWYgKFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3JMaXN0PiA+KiBzaW1wbGVTZWxl
Y3Rvckxpc3QgPSBzZWwtPnNpbXBsZVNlbGVjdG9yTGlzdCgpKSB7CisgICAgICAgICAgICAgICAg
Zm9yIChWZWN0b3I8T3duUHRyPENTU1NlbGVjdG9yTGlzdD4gPjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBzaW1wbGVTZWxlY3Rvckxpc3QtPmJlZ2luKCk7IGl0ICE9IHNpbXBsZVNlbGVjdG9yTGlzdC0+
ZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBzaW1wbGVTZWxlY3Rvck1h
dGNoZXMgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBmb3IgKENTU1NlbGVjdG9yKiBzdWJT
ZWwgPSBpdC0+Z2V0KCktPmZpcnN0KCk7IHN1YlNlbDsgc3ViU2VsID0gc3ViU2VsLT50YWdIaXN0
b3J5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2hlY2tPbmVTZWxlY3Rvcihz
dWJTZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVsZW1lbnRTdHls
ZSwgZWxlbWVudFBhcmVudFN0eWxlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
bXBsZVNlbGVjdG9yTWF0Y2hlcyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGlmIChzaW1wbGVTZWxlY3Rvck1hdGNoZXMpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoZHluYW1pY1BzZXVkbyAhPSBOT1BTRVVETyAmJiAo
UmVuZGVyU2Nyb2xsYmFyOjpzY3JvbGxiYXJGb3JTdHlsZVJlc29sdmUoKSB8fCBkeW5hbWljUHNl
dWRvID09IFNDUk9MTEJBUl9DT1JORVIgfHwgZHluYW1pY1BzZXVkbyA9PSBSRVNJWkVSKSkgewog
ICAgICAgICAgICAgLy8gQ1NTIHNjcm9sbGJhcnMgbWF0Y2ggYSBzcGVjaWZpYyBzdWJzZXQgb2Yg
cHNldWRvIGNsYXNzZXMsIGFuZCB0aGV5IGhhdmUgc3BlY2lhbGl6ZWQgcnVsZXMgZm9yIGVhY2gK
QEAgLTIzODYsNiArMjQwNSw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVj
a2VyOjoKICAgICAgICAgc3dpdGNoIChzZWwtPnBzZXVkb1R5cGUoKSkgewogICAgICAgICAgICAg
Ly8gUHNldWRvIGNsYXNzZXM6CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9O
b3Q6CisgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Bbnk6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7IC8vIEFscmVhZHkgaGFuZGxlZCB1cCBhYm92ZS4KICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0VtcHR5OiB7CiAgICAgICAgICAgICAgICAgYm9vbCByZXN1
bHQgPSB0cnVlOwpAQCAtMzA5MywxMCArMzExMywxNCBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0SWRz
QW5kU2libGluZ1J1bGVzRnJvCiAgICAgICAgIGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0g
cnVsZURhdGEuc2VsZWN0b3IoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gc2VsZWN0b3ItPnRhZ0hp
c3RvcnkoKSkgewogICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVj
dG9yOjpJZCAmJiAhc2VsZWN0b3ItPnZhbHVlKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
IGlkcy5hZGQoc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpKTsKLSAgICAgICAgICAgIGlmIChDU1NT
ZWxlY3Rvciogc2ltcGxlU2VsZWN0b3IgPSBzZWxlY3Rvci0+c2ltcGxlU2VsZWN0b3IoKSkgewot
ICAgICAgICAgICAgICAgIEFTU0VSVCghc2ltcGxlU2VsZWN0b3ItPnNpbXBsZVNlbGVjdG9yKCkp
OwotICAgICAgICAgICAgICAgIGlmIChzaW1wbGVTZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxl
Y3Rvcjo6SWQgJiYgIXNpbXBsZVNlbGVjdG9yLT52YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICAgICAgaWRzLmFkZChzaW1wbGVTZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCkpOworICAg
ICAgICAgICAgaWYgKFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3JMaXN0PiA+KiBzaW1wbGVTZWxl
Y3Rvckxpc3QgPSBzZWxlY3Rvci0+c2ltcGxlU2VsZWN0b3JMaXN0KCkpIHsKKyAgICAgICAgICAg
ICAgICBmb3IgKFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3JMaXN0PiA+Ojpjb25zdF9pdGVyYXRv
ciBpdCA9ICBzaW1wbGVTZWxlY3Rvckxpc3QtPmJlZ2luKCk7IGl0ICE9IHNpbXBsZVNlbGVjdG9y
TGlzdC0+ZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChDU1NTZWxlY3Rv
ciogc2ltcGxlU2VsZWN0b3IgPSBpdC0+Z2V0KCktPmZpcnN0KCk7IHNpbXBsZVNlbGVjdG9yOyBz
aW1wbGVTZWxlY3RvciA9IHNpbXBsZVNlbGVjdG9yLT50YWdIaXN0b3J5KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVCghc2ltcGxlU2VsZWN0b3ItPnNpbXBsZVNlbGVjdG9yTGlz
dCgpKTsgLy8gRklYTUUgaXMgdGhpcyBjb3JyZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoc2ltcGxlU2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OklkICYmICFzaW1wbGVT
ZWxlY3Rvci0+dmFsdWUoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWRzLmFkZChzaW1wbGVTZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCkpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KHNlbGVjdG9yLT5pc1NpYmxpbmdTZWxlY3RvcigpKQogICAgICAgICAgICAgICAgIGZvdW5kU2li
bGluZ1NlbGVjdG9yID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy90b2tlbml6ZXIu
ZmxleAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvdG9rZW5pemVyLmZsZXgJKHJl
dmlzaW9uIDc3OTE0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3Rva2VuaXplci5mbGV4CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDcgQEAgbnRoICAgICAgICAgICAgIFtcKy1dP3tpbnRu
dW19Km4oW1x0XHJcbgoge251bX0gICAgICAgICAgICAgICAgICAge3l5VG9rID0gRkxPQVRUT0tF
TjsgcmV0dXJuIHl5VG9rO30KIAogIm5vdCgiICAgICAgICAgICAgICAgICAge3l5VG9rID0gTk9U
RlVOQ1RJT047IHJldHVybiB5eVRvazt9CisiLXdlYmtpdC1hbnkoIiAgICAgICAgICB7eXlUb2sg
PSBBTllGVU5DVElPTjsgcmV0dXJuIHl5VG9rO30KICJ1cmwoInt3fXtzdHJpbmd9e3d9IikiIHt5
eVRvayA9IFVSSTsgcmV0dXJuIHl5VG9rO30KICJ1cmwoInt3fXt1cmx9e3d9IikiICAgIHt5eVRv
ayA9IFVSSTsgcmV0dXJuIHl5VG9rO30KIHtpZGVudH0iKCIgICAgICAgICAgICAgIHt5eVRvayA9
IEZVTkNUSU9OOyByZXR1cm4geXlUb2s7fQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzc5MTQpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAx
MS0wMi0wNyAgUsOpbWkgWmFyYSAgPHJlbWktemFyYUBtYWMuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHdlYmtpdCBzaG91bGQgaW1wbGVtZW50
IC1tb3otYW55IHNlbGVjdG9yIChhcyAtd2Via2l0LWFueSBvYnZpb3VzbHkpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODA5NQorCisgICAgICAgICog
ZmFzdC9jc3MvY3NzLXNlbGVjdG9yLXRleHQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
Y3NzL2Nzcy1zZWxlY3Rvci10ZXh0Lmh0bWw6CisgICAgICAgICogZmFzdC9jc3MvY3NzLXNldC1z
ZWxlY3Rvci10ZXh0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Nzcy9jc3Mtc2V0LXNl
bGVjdG9yLXRleHQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tYW55LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvcHNldWRvLWFueS5odG1sOiBBZGRlZC4K
KwogMjAxMS0wMi0wNyAgQ3JpcyBOZWNrYXIgIDxjZG5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEppYW4gTGkuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3Mtc2Vs
ZWN0b3ItdGV4dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
c3MvY3NzLXNlbGVjdG9yLXRleHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3NzkxNCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY3NzL2Nzcy1zZWxlY3Rvci10ZXh0LWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBQQVNTIHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJzp2
aXNpdGVkIHsgCiAKIFBBU1MgcGFyc2VUaGVuU2VyaWFsaXplUnVsZSgnOmxhbmcoYSkgeyB9Jykg
aXMgJzpsYW5nKGEpIHsgfScKIFBBU1MgcGFyc2VUaGVuU2VyaWFsaXplUnVsZSgnOm5vdChhKSB7
IH0nKSBpcyAnOm5vdChhKSB7IH0nCitQQVNTIHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJzotd2Vi
a2l0LWFueShhLGIscCkgeyB9JykgaXMgJzotd2Via2l0LWFueShhLGIscCkgeyB9JwogCiBQQVNT
IHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJzo6YWZ0ZXIgeyB9JykgaXMgJzo6YWZ0ZXIgeyB9Jwog
UEFTUyBwYXJzZVRoZW5TZXJpYWxpemVSdWxlKCc6OmJlZm9yZSB7IH0nKSBpcyAnOjpiZWZvcmUg
eyB9JwpAQCAtNjUsNiArNjYsMTMgQEAgUEFTUyBwYXJzZVRoZW5TZXJpYWxpemVSdWxlKCc6Oi13
ZWJraXQtcwogUEFTUyBwYXJzZVRoZW5TZXJpYWxpemVSdWxlKCc6Oi13ZWJraXQtc2xpZGVyLXRo
dW1iIHsgfScpIGlzICc6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsgfScKIAogUEFTUyBwYXJzZVRo
ZW5TZXJpYWxpemVSdWxlKCdpbnB1dDpub3QoW3R5cGU9ImZpbGUiXSk6Zm9jdXMgeyB9JykgaXMg
J2lucHV0Om5vdChbdHlwZT0iZmlsZSJdKTpmb2N1cyB7IH0nCitQQVNTIHBhcnNlVGhlblNlcmlh
bGl6ZVJ1bGUoJzotd2Via2l0LWFueShbdHlwZT0iZmlsZSJdKSB7IH0nKSBpcyAnOi13ZWJraXQt
YW55KFt0eXBlPSJmaWxlIl0pIHsgfScKK1BBU1MgcGFyc2VUaGVuU2VyaWFsaXplUnVsZSgnOi13
ZWJraXQtYW55KDpob3ZlcikgeyB9JykgaXMgJzotd2Via2l0LWFueSg6aG92ZXIpIHsgfScKK1BB
U1MgcGFyc2VUaGVuU2VyaWFsaXplUnVsZSgnaW5wdXQ6LXdlYmtpdC1hbnkoW3R5cGU9ImZpbGUi
XSw6aG92ZXIsOmZvY3VzKTplbmFibGVkIHsgfScpIGlzICdpbnB1dDotd2Via2l0LWFueShbdHlw
ZT0iZmlsZSJdLDpob3Zlciw6Zm9jdXMpOmVuYWJsZWQgeyB9JworUEFTUyBwYXJzZVRoZW5TZXJp
YWxpemVSdWxlKCc6LXdlYmtpdC1hbnkoaW5wdXRbdHlwZT0iZmlsZSJdLGE6aG92ZXIsYnV0dG9u
OmZvY3VzKSB7IH0nKSBpcyAnOi13ZWJraXQtYW55KGlucHV0W3R5cGU9ImZpbGUiXSxhOmhvdmVy
LGJ1dHRvbjpmb2N1cykgeyB9JworUEFTUyBwYXJzZVRoZW5TZXJpYWxpemVSdWxlKCc6LXdlYmtp
dC1hbnkoLmNsYXNzMS5jbGFzczIuY2xhc3MzKSB7IH0nKSBpcyAnOi13ZWJraXQtYW55KC5jbGFz
czEuY2xhc3MyLmNsYXNzMykgeyB9JworUEFTUyBwYXJzZVRoZW5TZXJpYWxpemVSdWxlKCc6LXdl
YmtpdC1hbnkoLmNsYXNzMTpob3ZlcikgeyB9JykgaXMgJzotd2Via2l0LWFueSguY2xhc3MxOmhv
dmVyKSB7IH0nCitQQVNTIHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJzotd2Via2l0LWFueShhLmNs
YXNzMS5jbGFzczIuY2xhc3MzOmhvdmVyKSB7IH0nKSBpcyAnOi13ZWJraXQtYW55KGEuY2xhc3Mx
LmNsYXNzMi5jbGFzczM6aG92ZXIpIHsgfScKIAogUEFTUyBwYXJzZVRoZW5TZXJpYWxpemVSdWxl
KCcqOmFjdGl2ZSB7IH0nKSBpcyAnOmFjdGl2ZSB7IH0nCiBQQVNTIHBhcnNlVGhlblNlcmlhbGl6
ZVJ1bGUoJ3xhIHsgfScpIGlzICdhIHsgfScKQEAgLTgwLDYgKzg4LDggQEAgUEFTUyBwYXJzZVRo
ZW5TZXJpYWxpemVSdWxlKCc6YmVmb3JlIHsgfQogUEFTUyBwYXJzZVRoZW5TZXJpYWxpemVSdWxl
KCc6Zmlyc3QtbGV0dGVyIHsgfScpIGlzICc6OmZpcnN0LWxldHRlciB7IH0nCiBQQVNTIHBhcnNl
VGhlblNlcmlhbGl6ZVJ1bGUoJzpmaXJzdC1saW5lIHsgfScpIGlzICc6OmZpcnN0LWxpbmUgeyB9
JwogCitQQVNTIHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJzotd2Via2l0LWFueSggICAgYS5jbGFz
czEgICwgIAkjaWQsW2F0dHJdICApIHsgfScpIGlzICc6LXdlYmtpdC1hbnkoYS5jbGFzczEsI2lk
LFthdHRyXSkgeyB9JworCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1Qg
Q09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2Nzcy1zZWxlY3Rvci10ZXh0Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzLXNlbGVjdG9yLXRleHQu
aHRtbAkocmV2aXNpb24gNzc5MTQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3Mtc2VsZWN0
b3ItdGV4dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIGRlYnVnKCcnKTsK
IAogdGVzdFNlbGVjdG9yUm91bmRUcmlwKCI6bGFuZyhhKSIpOwogdGVzdFNlbGVjdG9yUm91bmRU
cmlwKCI6bm90KGEpIik7Cit0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoIjotd2Via2l0LWFueShhLGIs
cCkiKTsKIAogZGVidWcoJycpOwogCkBAIC0xMDksNiArMTEwLDEzIEBAIHRlc3RTZWxlY3RvclJv
dW5kVHJpcCgiOjotd2Via2l0LXNsaWRlci0KIGRlYnVnKCcnKTsKIAogdGVzdFNlbGVjdG9yUm91
bmRUcmlwKCdpbnB1dDpub3QoW3R5cGU9ImZpbGUiXSk6Zm9jdXMnKTsKK3Rlc3RTZWxlY3RvclJv
dW5kVHJpcCgnOi13ZWJraXQtYW55KFt0eXBlPSJmaWxlIl0pJyk7Cit0ZXN0U2VsZWN0b3JSb3Vu
ZFRyaXAoJzotd2Via2l0LWFueSg6aG92ZXIpJyk7Cit0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoJ2lu
cHV0Oi13ZWJraXQtYW55KFt0eXBlPSJmaWxlIl0sOmhvdmVyLDpmb2N1cyk6ZW5hYmxlZCcpOwor
dGVzdFNlbGVjdG9yUm91bmRUcmlwKCc6LXdlYmtpdC1hbnkoaW5wdXRbdHlwZT0iZmlsZSJdLGE6
aG92ZXIsYnV0dG9uOmZvY3VzKScpOwordGVzdFNlbGVjdG9yUm91bmRUcmlwKCc6LXdlYmtpdC1h
bnkoLmNsYXNzMS5jbGFzczIuY2xhc3MzKScpOwordGVzdFNlbGVjdG9yUm91bmRUcmlwKCc6LXdl
YmtpdC1hbnkoLmNsYXNzMTpob3ZlciknKTsKK3Rlc3RTZWxlY3RvclJvdW5kVHJpcCgnOi13ZWJr
aXQtYW55KGEuY2xhc3MxLmNsYXNzMi5jbGFzczM6aG92ZXIpJyk7CiAKIGRlYnVnKCcnKTsKIApA
QCAtMTM0LDYgKzE0MiwxMCBAQCBzaG91bGRCZSgicGFyc2VUaGVuU2VyaWFsaXplUnVsZSgnOmZp
cnN0CiAKIGRlYnVnKCcnKTsKIAorc2hvdWxkQmUoInBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJzot
d2Via2l0LWFueSggICAgYS5jbGFzczEgICwgIAkjaWQsW2F0dHJdICApIHsgfScpIiwiJzotd2Vi
a2l0LWFueShhLmNsYXNzMSwjaWQsW2F0dHJdKSB7IH0nIik7CisKK2RlYnVnKCcnKTsKKwogc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9jc3Mtc2V0LXNlbGVjdG9yLXRleHQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY3NzL2Nzcy1zZXQtc2VsZWN0b3ItdGV4dC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDc3OTE0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzLXNldC1zZWxlY3Rv
ci10ZXh0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBQQVNT
IHNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCc6dmlzaXRlZCcpCiAKIFBBU1Mgc2V0VGhlblJlYWRT
ZWxlY3RvclRleHQoJzpsYW5nKGEpJykgaXMgJzpsYW5nKGEpJwogUEFTUyBzZXRUaGVuUmVhZFNl
bGVjdG9yVGV4dCgnOm5vdChhKScpIGlzICc6bm90KGEpJworUEFTUyBzZXRUaGVuUmVhZFNlbGVj
dG9yVGV4dCgnOi13ZWJraXQtYW55KGEsYixwKScpIGlzICc6LXdlYmtpdC1hbnkoYSxiLHApJwog
CiBQQVNTIHNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCc6OmFmdGVyJykgaXMgJzo6YWZ0ZXInCiBQ
QVNTIHNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCc6OmJlZm9yZScpIGlzICc6OmJlZm9yZScKQEAg
LTc1LDYgKzc2LDEzIEBAIFBBU1Mgc2V0VGhlblJlYWRTZWxlY3RvclRleHQoJzo6LXdlYmtpdC0K
IFBBU1Mgc2V0VGhlblJlYWRTZWxlY3RvclRleHQoJzo6LXdlYmtpdC1zbGlkZXItdGh1bWInKSBp
cyAnOjotd2Via2l0LXNsaWRlci10aHVtYicKIAogUEFTUyBzZXRUaGVuUmVhZFNlbGVjdG9yVGV4
dCgnaW5wdXQ6bm90KFt0eXBlPSJmaWxlIl0pOmZvY3VzJykgaXMgJ2lucHV0Om5vdChbdHlwZT0i
ZmlsZSJdKTpmb2N1cycKK1BBU1Mgc2V0VGhlblJlYWRTZWxlY3RvclRleHQoJzotd2Via2l0LWFu
eShbdHlwZT0iZmlsZSJdKScpIGlzICc6LXdlYmtpdC1hbnkoW3R5cGU9ImZpbGUiXSknCitQQVNT
IHNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCc6LXdlYmtpdC1hbnkoOmhvdmVyKScpIGlzICc6LXdl
YmtpdC1hbnkoOmhvdmVyKScKK1BBU1Mgc2V0VGhlblJlYWRTZWxlY3RvclRleHQoJ2lucHV0Oi13
ZWJraXQtYW55KFt0eXBlPSJmaWxlIl0sOmhvdmVyLDpmb2N1cyk6ZW5hYmxlZCcpIGlzICdpbnB1
dDotd2Via2l0LWFueShbdHlwZT0iZmlsZSJdLDpob3Zlciw6Zm9jdXMpOmVuYWJsZWQnCitQQVNT
IHNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCc6LXdlYmtpdC1hbnkoaW5wdXRbdHlwZT0iZmlsZSJd
LGE6aG92ZXIsYnV0dG9uOmZvY3VzKScpIGlzICc6LXdlYmtpdC1hbnkoaW5wdXRbdHlwZT0iZmls
ZSJdLGE6aG92ZXIsYnV0dG9uOmZvY3VzKScKK1BBU1Mgc2V0VGhlblJlYWRTZWxlY3RvclRleHQo
Jzotd2Via2l0LWFueSguY2xhc3MxLmNsYXNzMi5jbGFzczMpJykgaXMgJzotd2Via2l0LWFueSgu
Y2xhc3MxLmNsYXNzMi5jbGFzczMpJworUEFTUyBzZXRUaGVuUmVhZFNlbGVjdG9yVGV4dCgnOi13
ZWJraXQtYW55KC5jbGFzczE6aG92ZXIpJykgaXMgJzotd2Via2l0LWFueSguY2xhc3MxOmhvdmVy
KScKK1BBU1Mgc2V0VGhlblJlYWRTZWxlY3RvclRleHQoJzotd2Via2l0LWFueShhLmNsYXNzMS5j
bGFzczIuY2xhc3MzOmhvdmVyKScpIGlzICc6LXdlYmtpdC1hbnkoYS5jbGFzczEuY2xhc3MyLmNs
YXNzMzpob3ZlciknCiAKIFBBU1Mgc2V0VGhlblJlYWRTZWxlY3RvclRleHQoJyo6YWN0aXZlJykg
aXMgJzphY3RpdmUnCiBQQVNTIHNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCd8YScpIGlzICdhJwpA
QCAtOTAsNiArOTgsOCBAQCBQQVNTIHNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCc6YmVmb3JlJykg
CiBQQVNTIHNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCc6Zmlyc3QtbGV0dGVyJykgaXMgJzo6Zmly
c3QtbGV0dGVyJwogUEFTUyBzZXRUaGVuUmVhZFNlbGVjdG9yVGV4dCgnOmZpcnN0LWxpbmUnKSBp
cyAnOjpmaXJzdC1saW5lJwogCitQQVNTIHNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCc6LXdlYmtp
dC1hbnkoICAgIGEuY2xhc3MxICAsICAJI2lkLFthdHRyXSAgKScpIGlzICc6LXdlYmtpdC1hbnko
YS5jbGFzczEsI2lkLFthdHRyXSknCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzLXNldC1zZWxl
Y3Rvci10ZXh0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzLXNl
dC1zZWxlY3Rvci10ZXh0Lmh0bWwJKHJldmlzaW9uIDc3OTE0KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jc3MvY3NzLXNldC1zZWxlY3Rvci10ZXh0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYg
Kzk5LDcgQEAgZGVidWcoJycpOwogCiB0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoIjpsYW5nKGEpIik7
CiB0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoIjpub3QoYSkiKTsKK3Rlc3RTZWxlY3RvclJvdW5kVHJp
cCgiOi13ZWJraXQtYW55KGEsYixwKSIpOwogCiBkZWJ1ZygnJyk7CiAKQEAgLTEyNiw2ICsxMjcs
MTMgQEAgdGVzdFNlbGVjdG9yUm91bmRUcmlwKCI6Oi13ZWJraXQtc2xpZGVyLQogZGVidWcoJycp
OwogCiB0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoJ2lucHV0Om5vdChbdHlwZT0iZmlsZSJdKTpmb2N1
cycpOwordGVzdFNlbGVjdG9yUm91bmRUcmlwKCc6LXdlYmtpdC1hbnkoW3R5cGU9ImZpbGUiXSkn
KTsKK3Rlc3RTZWxlY3RvclJvdW5kVHJpcCgnOi13ZWJraXQtYW55KDpob3ZlciknKTsKK3Rlc3RT
ZWxlY3RvclJvdW5kVHJpcCgnaW5wdXQ6LXdlYmtpdC1hbnkoW3R5cGU9ImZpbGUiXSw6aG92ZXIs
OmZvY3VzKTplbmFibGVkJyk7Cit0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoJzotd2Via2l0LWFueShp
bnB1dFt0eXBlPSJmaWxlIl0sYTpob3ZlcixidXR0b246Zm9jdXMpJyk7Cit0ZXN0U2VsZWN0b3JS
b3VuZFRyaXAoJzotd2Via2l0LWFueSguY2xhc3MxLmNsYXNzMi5jbGFzczMpJyk7Cit0ZXN0U2Vs
ZWN0b3JSb3VuZFRyaXAoJzotd2Via2l0LWFueSguY2xhc3MxOmhvdmVyKScpOwordGVzdFNlbGVj
dG9yUm91bmRUcmlwKCc6LXdlYmtpdC1hbnkoYS5jbGFzczEuY2xhc3MyLmNsYXNzMzpob3Zlcikn
KTsKIAogZGVidWcoJycpOwogCkBAIC0xNTEsNiArMTU5LDEwIEBAIHNob3VsZEJlKCJzZXRUaGVu
UmVhZFNlbGVjdG9yVGV4dCgnOmZpcnMKIAogZGVidWcoJycpOwogCitzaG91bGRCZSgic2V0VGhl
blJlYWRTZWxlY3RvclRleHQoJzotd2Via2l0LWFueSggICAgYS5jbGFzczEgICwgIAkjaWQsW2F0
dHJdICApJykiLCInOi13ZWJraXQtYW55KGEuY2xhc3MxLCNpZCxbYXR0cl0pJyIpOworCitkZWJ1
ZygnJyk7CisKIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiAKIDwvc2NyaXB0PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLWFueS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLWFueS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tYW55LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4MSBAQAorVGhpcyB0ZXN0IHRoZSA6LXdlYmtpdC1hbnkgc2Vs
ZWN0b3IgaW4gdmFyaW91cyBzY2VuYXJpb3MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCit0aGlzIGlzIEdSRUVOCisKK3RoaXMgaXMgR1JFRU4KK3RoaXMgaXMgR1JFRU4KKwordGhp
cyBpcyBSRUQKKwordGhpcyBpcyBHUkVFTgorCit0aGlzIGlzIFJFRAordGhpcyBpcyBHUkVFTgor
dGhpcyBpcyBSRUQKKworQydlc3QgVkVSVAorCit0aGlzIGlzIFJFRAorCit0aGlzIGlzIFJFRAor
Cit0aGlzIGlzIEdSRUVOCisKK3RoaXMgaXMgUkVECisKK3RoaXMgaXMgUkVECisKK3RoaXMgaXMg
R1JFRU4KKwordGhpcyBpcyBSRUQKK3RoaXMgaXMgR1JFRU4KK3RoaXMgaXMgR1JFRU4KK3RoaXMg
aXMgUkVECit0aGlzIGlzIEdSRUVOCit0aGlzIGlzIEdSRUVOCit0aGlzIGlzIEdSRUVOIHdoZW4g
aG92ZXJlZAorCit0aGlzIGlzIEdSRUVOCisKK3RoaXMgaXMgR1JFRU4KKworCitUZXN0IDotd2Vi
a2l0LWFueSB3aXRoIGVsZW1lbnQgc2VsZWN0b3JzIAorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpIGlz
ICdyZ2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSBpcyAncmdiKDAsIDEyOCwg
MCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwp
LmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworVGVzdCA6LXdl
YmtpdC1hbnkgd2l0aCBjbGFzcywgaWQgYW5kIGF0dHJpYnV0ZSBzZWxlY3RvcnMgCitQQVNTIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoJ2NvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0
Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicp
IGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSBpcyAncmdiKDI1NSwg
MCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworUEFTUyBk
b2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0
eVZhbHVlKCdjb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3In
KSBpcyAncmdiKDAsIDEyOCwgMCknCitUZXN0IDotd2Via2l0LWFueSB3aXRoIG11bHRpcGxlIGNs
YXNzIHNlbGVjdG9ycyAKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCkn
CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdl
dFByb3BlcnR5VmFsdWUoJ2NvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDApJworUEFTUyBkb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVl
KCdjb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSBpcyAn
cmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDAp
JworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1Rlc3QgbXVsdGlw
bGUgOi13ZWJraXQtYW55IHNlbGVjdG9ycyAKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSBpcyAncmdi
KDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
ZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJwor
UEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdjb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQu
ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgn
Y29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykgaXMgJ3Jn
YigwLCAxMjgsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScK
K1Rlc3QgOi13ZWJraXQtYW55IGFuZCBkeW5hbWljIHBzZXVkbyBzZWxlY3RvcnMgCitQQVNTIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxob3ZlciwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgnY29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitUZXN0IGludmFsaWQgOi13
ZWJraXQtYW55IHNlbGVjdG9ycyAKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSBpcyAncmdiKDAsIDEy
OCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0ZBSUwgZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGhvdmVyLCBudWxsKS5nZXRQcm9wZXJ0
eVZhbHVlKCdjb2xvcicpIHNob3VsZCBiZSByZ2IoMCwgMTI4LCAwKS4gV2FzIHJnYigyNTUsIDAs
IDApLgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tYW55Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLWFueS5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLWFueS5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE4MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorCisjdGVzdHMgc3BhbiB7
IGNvbG9yOiByZWQ7IH0KKworI3Rlc3QxIDotd2Via2l0LWFueShwLCBkaXYsIGgxKSBzcGFuIHsg
Y29sb3I6IGdyZWVuOyB9CisKKyN0ZXN0MiA6LXdlYmtpdC1hbnkocC50ZXN0MmNsYXNzLCBkaXYj
dGVzdDJkaXYsIGgxW2xhbmc9ImZyIl0pIHNwYW4geyBjb2xvcjogZ3JlZW47IH0KKworI3Rlc3Qz
IDotd2Via2l0LWFueSgudGVzdDNjbGFzczEudGVzdDNjbGFzczIsIHAudGVzdDNjbGFzczFwLnRl
c3QzY2xhc3MycCkgc3BhbiB7IGNvbG9yOiBncmVlbjsgfQorCisjdGVzdDQgOi13ZWJraXQtYW55
KG9sLCB1bCkgOi13ZWJraXQtYW55KG9sLHVsKSBsaSBzcGFuIHsgY29sb3I6IGdyZWVuOyB9CisK
KyN0ZXN0NSA6LXdlYmtpdC1hbnkocDpob3Zlcikgc3BhbiB7IGNvbG9yOiBncmVlbiB9CisKKyN0
ZXN0NiBzcGFuIHsgY29sb3I6IGdyZWVuIH07CisjdGVzdDYgOi13ZWJraXQtYW55KCkgc3BhbiB7
IGNvbG9yOiByZWQ7IH0KKyN0ZXN0NiA6LXdlYmtpdC1hbnkoZGl2IHApIHNwYW4geyBjb2xvcjog
cmVkOyB9CisjdGVzdDYgOi13ZWJraXQtYW55KGRpdiA+IHApIHNwYW4geyBjb2xvcjogcmVkOyB9
CisjdGVzdDYgOi13ZWJraXQtYW55KGRpdiArIHApIHNwYW4geyBjb2xvcjogcmVkOyB9CisjdGVz
dDYgOi13ZWJraXQtYW55KGRpdiB+IHApIHNwYW4geyBjb2xvcjogcmVkOyB9CisjdGVzdDYgOi13
ZWJraXQtYW55KHAsICkgc3BhbiB7IGNvbG9yOiByZWQ7IH0KKyN0ZXN0NiA6LXdlYmtpdC1hbnko
LCBwKSBzcGFuIHsgY29sb3I6IHJlZDsgfQorCis8L3N0eWxlPgorCis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorCis8ZGl2IGlkPSJ0ZXN0cyI+CisJPGRpdiBpZD0i
dGVzdDEiPgorCQk8cD50aGlzIGlzIDxzcGFuIGlkPSJzcGFuXzFfcCI+R1JFRU48L3NwYW4+PC9w
PgorCQk8ZGl2PnRoaXMgaXMgPHNwYW4gaWQ9InNwYW5fMV9kaXYiPkdSRUVOPC9zcGFuPjwvZGl2
PgorCQk8aDE+dGhpcyBpcyA8c3BhbiBpZD0ic3Bhbl8xX2gxIj5HUkVFTjwvc3Bhbj48L2gxPgor
CTwvZGl2PgorCQorCTxkaXYgaWQ9InRlc3QyIj4KKwkJPHA+dGhpcyBpcyA8c3BhbiBpZD0ic3Bh
bl8yX3BfcmVkIj5SRUQ8L3NwYW4+PC9wPgorCQk8cCBjbGFzcz0idGVzdDJjbGFzcyI+dGhpcyBp
cyA8c3BhbiBpZD0ic3Bhbl8yX3AiPkdSRUVOPC9zcGFuPjwvcD4KKwkJPGRpdj50aGlzIGlzIDxz
cGFuIGlkPSJzcGFuXzJfZGl2X3JlZCI+UkVEPC9zcGFuPjwvZGl2PgorCQk8ZGl2IGlkPSJ0ZXN0
MmRpdiI+dGhpcyBpcyA8c3BhbiBpZD0ic3Bhbl8yX2RpdiI+R1JFRU48L3NwYW4+PC9kaXY+CisJ
CTxoMT50aGlzIGlzIDxzcGFuIGlkPSJzcGFuXzJfaDFfcmVkIj5SRUQ8L3NwYW4+PC9oMT4KKwkJ
PGgxIGxhbmc9ImZyIj5DJ2VzdCA8c3BhbiBpZD0ic3Bhbl8yX2gxIj5WRVJUPC9zcGFuPjwvaDE+
CisJPC9kaXY+CisJCisJPGRpdiBpZD0idGVzdDMiPgorCQk8cCBjbGFzcz0idGVzdDNjbGFzczEi
PnRoaXMgaXMgPHNwYW4gaWQ9InNwYW5fM19jbGFzczFfcmVkIj5SRUQ8L3NwYW4+PC9wPgorCQk8
cCBjbGFzcz0idGVzdDNjbGFzczIiPnRoaXMgaXMgPHNwYW4gaWQ9InNwYW5fM19jbGFzczJfcmVk
Ij5SRUQ8L3NwYW4+PC9wPgorCQk8cCBjbGFzcz0idGVzdDNjbGFzczEgdGVzdDNjbGFzczIiPnRo
aXMgaXMgPHNwYW4gaWQ9InNwYW5fM19jbGFzcyI+R1JFRU48L3NwYW4+PC9wPgorCQk8cCBjbGFz
cz0idGVzdDNjbGFzczFwIj50aGlzIGlzIDxzcGFuIGlkPSJzcGFuXzNfY2xhc3MxcF9yZWQiPlJF
RDwvc3Bhbj48L3A+CisJCTxwIGNsYXNzPSJ0ZXN0M2NsYXNzMnAiPnRoaXMgaXMgPHNwYW4gaWQ9
InNwYW5fM19jbGFzczJwX3JlZCI+UkVEPC9zcGFuPjwvcD4KKwkJPHAgY2xhc3M9InRlc3QzY2xh
c3MxcCB0ZXN0M2NsYXNzMnAiPnRoaXMgaXMgPHNwYW4gaWQ9InNwYW5fM19jbGFzc3AiPkdSRUVO
PC9zcGFuPjwvcD4KKwk8L2Rpdj4KKwkKKwk8ZGl2IGlkPSJ0ZXN0NCI+CisJCTxvbD4KKwkJCTxs
aT50aGlzIGlzIDxzcGFuIGlkPSJzcGFuXzRfcmVkMSI+UkVEPC9zcGFuPjwvbGk+CisJCQk8bGk+
CisJCQkJPG9sPgorCQkJCQk8bGk+dGhpcyBpcyA8c3BhbiBpZD0ic3Bhbl80X29sb2wiPkdSRUVO
PC9zcGFuPjwvbGk+CisJCQkJPC9vbD4KKwkJCTwvbGk+CisJCQk8bGk+CisJCQkJPHVsPgorCQkJ
CQk8bGk+dGhpcyBpcyA8c3BhbiBpZD0ic3Bhbl80X29sdWwiPkdSRUVOPC9zcGFuPjwvbGk+CisJ
CQkJPC91bD4KKwkJCTwvbGk+CisJCTwvb2w+CisJCTx1bD4KKwkJCTxsaT50aGlzIGlzIDxzcGFu
IGlkPSJzcGFuXzRfcmVkMiI+UkVEPC9zcGFuPjwvbGk+CisJCQk8bGk+CisJCQkJPG9sPgorCQkJ
CQk8bGk+dGhpcyBpcyA8c3BhbiBpZD0ic3Bhbl80X3Vsb2wiPkdSRUVOPC9zcGFuPjwvbGk+CisJ
CQkJPC9vbD4KKwkJCTwvbGk+CisJCQk8bGk+CisJCQkJPHVsPgorCQkJCQk8bGk+dGhpcyBpcyA8
c3BhbiBpZD0ic3Bhbl80X3VsdWwiPkdSRUVOPC9zcGFuPjwvbGk+CisJCQkJPC91bD4KKwkJCTwv
bGk+CisJCTwvdWw+CisJPC9kaXY+CisJCisJPGRpdiBpZD0idGVzdDUiPgorCQk8cCBpZD0icF81
Ij50aGlzIGlzIDxzcGFuIGlkPSJzcGFuXzUiPkdSRUVOPC9zcGFuPiB3aGVuIGhvdmVyZWQ8L3A+
CisJPC9kaXY+CisJCisJPGRpdiBpZD0idGVzdDYiPgorCQk8ZGl2PjxwPnRoaXMgaXMgPHNwYW4g
aWQ9InNwYW5fNl8xIj5HUkVFTjwvc3Bhbj48L3A+PC9kaXY+CisJCTxwPnRoaXMgaXMgPHNwYW4g
aWQ9InNwYW5fNl8yIj5HUkVFTjwvc3Bhbj48L3A+CisJPC9kaXY+Cis8L2Rpdj4KKworPGJyPgor
PHNjcmlwdD4KKworPC9zY3JpcHQ+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCdUaGlzIHRlc3QgdGhlIDotd2Via2l0LWFueSBzZWxlY3RvciBpbiB2
YXJpb3VzIHNjZW5hcmlvcy4nKTsKKworZGVidWcoIlRlc3QgOi13ZWJraXQtYW55IHdpdGggZWxl
bWVudCBzZWxlY3RvcnMgIik7CitlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuXzFf
cCIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWws
IG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykiLCAiJ3JnYigwLCAxMjgsIDApJyIpOwor
ZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Bhbl8xX2RpdiIpOworc2hvdWxkQmUoImRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoJ2NvbG9yJykiLCAiJ3JnYigwLCAxMjgsIDApJyIpOworZWwgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic3Bhbl8xX2gxIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSIsICIn
cmdiKDAsIDEyOCwgMCknIik7CisKK2RlYnVnKCJUZXN0IDotd2Via2l0LWFueSB3aXRoIGNsYXNz
LCBpZCBhbmQgYXR0cmlidXRlIHNlbGVjdG9ycyAiKTsKK2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInNwYW5fMl9wX3JlZCIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykiLCAiJ3Jn
YigyNTUsIDAsIDApJyIpOworZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Bhbl8yX2Rp
dl9yZWQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSci
KTsKK2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwYW5fMl9oMV9yZWQiKTsKK3Nob3Vs
ZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdjb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKK2VsID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInNwYW5fMl9wIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3In
KSIsICIncmdiKDAsIDEyOCwgMCknIik7CitlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
cGFuXzJfZGl2Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSIsICIncmdiKDAsIDEyOCwg
MCknIik7CitlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuXzJfaDEiKTsKK3Nob3Vs
ZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdjb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKKworZGVidWcoIlRl
c3QgOi13ZWJraXQtYW55IHdpdGggbXVsdGlwbGUgY2xhc3Mgc2VsZWN0b3JzICIpOworZWwgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Bhbl8zX2NsYXNzMV9yZWQiKTsKK3Nob3VsZEJlKCJk
b2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0
eVZhbHVlKCdjb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKK2VsID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInNwYW5fM19jbGFzczJfcmVkIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVm
YXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29s
b3InKSIsICIncmdiKDI1NSwgMCwgMCknIik7CitlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJzcGFuXzNfY2xhc3MiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpIiwgIidyZ2IoMCwg
MTI4LCAwKSciKTsKK2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwYW5fM19jbGFzczFw
X3JlZCIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
ZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykiLCAiJ3JnYigyNTUsIDAsIDApJyIp
OworZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Bhbl8zX2NsYXNzMnBfcmVkIik7Citz
aG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCku
Z2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSIsICIncmdiKDI1NSwgMCwgMCknIik7CitlbCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuXzNfY2xhc3NwIik7CitzaG91bGRCZSgiZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1
ZSgnY29sb3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7CisKK2RlYnVnKCJUZXN0IG11bHRpcGxl
IDotd2Via2l0LWFueSBzZWxlY3RvcnMgIik7CitlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJzcGFuXzRfcmVkMSIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykiLCAiJ3JnYigyNTUs
IDAsIDApJyIpOworZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Bhbl80X29sb2wiKTsK
K3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxs
KS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKK2VsID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwYW5fNF9vbHVsIik7CitzaG91bGRCZSgiZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1
ZSgnY29sb3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7CitlbCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJzcGFuXzRfcmVkMiIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykiLCAiJ3Jn
YigyNTUsIDAsIDApJyIpOworZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Bhbl80X3Vs
b2wiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVs
LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsK
K2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwYW5fNF91bHVsIik7CitzaG91bGRCZSgi
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgnY29sb3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7CisKK2RlYnVnKCJUZXN0IDot
d2Via2l0LWFueSBhbmQgZHluYW1pYyBwc2V1ZG8gc2VsZWN0b3JzICIpOworaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworCWVsaG92ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic3Bhbl81Iik7CisJc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUoZWxob3ZlciwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSIsICIncmdiKDI1
NSwgMCwgMCknIik7CisJdmFyIHRhcmdldEVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cF81Iik7CisJZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8odGFyZ2V0RWxlbS5vZmZzZXRMZWZ0ICsg
MSwgdGFyZ2V0RWxlbS5vZmZzZXRUb3AgKyAxKTsKKyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAJc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUoZWxob3ZlciwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSIsICIncmdiKDAs
IDEyOCwgMCknIik7CisgICAgCXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgfSw1MCk7CisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKK30KKworZGVidWcoIlRlc3QgaW52YWxpZCA6LXdlYmtpdC1hbnkgc2VsZWN0b3Jz
ICIpOworZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Bhbl82XzEiKTsKK3Nob3VsZEJl
KCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9w
ZXJ0eVZhbHVlKCdjb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKK2VsID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNwYW5fNl8yIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSIs
ICIncmdiKDAsIDEyOCwgMCknIik7CisKK2RlYnVnKCcnKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81612</attachid>
            <date>2011-02-08 01:16:14 -0800</date>
            <delta_ts>2011-03-17 20:11:40 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>patch38095v2.diff</filename>
            <type>text/plain</type>
            <size>43271</size>
            <attacher name="Rémi Zara">remi_zara</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTE0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDItMDcgIFLDqW1pIFph
cmEgIDxyZW1pLXphcmFAbWFjLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICB3ZWJraXQgc2hvdWxkIGltcGxlbWVudCAtbW96LWFueSBzZWxlY3Rv
ciAoYXMgLXdlYmtpdC1hbnkgb2J2aW91c2x5KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgwOTUKKworICAgICAgICBUZXN0OiBmYXN0L2Nzcy9wc2V1
ZG8tYW55Lmh0bWwKKworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6IGFkZCBydWxlcyB0byBw
YXJzZSA6LXdlYmtpdC1hbnkKKyAgICAgICAgKiBjc3MvQ1NTUGFnZVJ1bGUuY3BwOiBhZGQgaW5j
bHVkZSB0byBjb3BlIHdpdGggQ1NTU2VsZWN0b3JMaXN0IGNoYW5nZQorICAgICAgICAqIGNzcy9D
U1NQYXJzZXIuY3BwOiBkZWFsIHdpdGggc2ltcGxlIHNlbGVjdG9yIGxpc3RzCisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OmxleCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNy
ZWF0ZUZsb2F0aW5nU2VsZWN0b3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
c2lua0Zsb2F0aW5nU2VsZWN0b3JMaXN0KToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6Cisg
ICAgICAgICogY3NzL0NTU1BhcnNlclZhbHVlcy5oOiBhdWdtZW50IHdoYXQgd2FzIHVzZWQgZm9y
IDpub3QgdG8gaGFuZGxlIDotd2Via2l0LWFueSBtdWx0aXBsZQorICAgICAgICBhcmd1bWVudHMK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpzZXRTaW1wbGVTZWxlY3Rvckxp
c3QpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTZWxlY3Rvcjo6c3BlY2lmaWNpdHlGb3JPbmVTZWxlY3Rvcik6IHNwZWNpZmljaXR5IGlzIHRo
YXQgb2YgYSBwc2V1ZG8tY2xhc3MsCisgICAgICAgIGFzIGluIGdlY2tvLiBTaG91bGQgZml4IGlu
IGZvbGxvd3VwIGJ1ZworICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnBzZXVkb0lkKToK
KyAgICAgICAgKFdlYkNvcmU6Om5hbWVUb1BzZXVkb1R5cGVNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1NlbGVjdG9yOjpzZWxlY3RvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6
OnNldFNpbXBsZVNlbGVjdG9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6
aXNTaW1wbGUpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU2VsZWN0b3I6OnNpbXBsZVNlbGVjdG9yTGlzdCk6CisgICAgICAgICogY3NzL0NTU1Nl
bGVjdG9yTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6Om5leHQp
OiBtb3ZlIG5leHQgaGVyZSB0byBjb3BlIHdpdGggQ1NTU2VsZWN0b3IgZGVwZW5kZW5jeSBvbgor
ICAgICAgICBDU1NTZWxlY3Rvckxpc3QKKyAgICAgICAgKFdlYkNvcmU6OmZvckVhY2hUYWdTZWxl
Y3Rvcik6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlzdC5oOiBjb3BlIHdpdGggQ1NTU2Vs
ZWN0b3IgZGVwZW5kZW5jeSBvbiBDU1NTZWxlY3Rvckxpc3QKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IpOiBtYXRjaCA6LXdlYmtpdC1hbnkoKQorICAg
ICAgICAoV2ViQ29yZTo6Y29sbGVjdElkc0FuZFNpYmxpbmdSdWxlc0Zyb21MaXN0KToKKyAgICAg
ICAgKiBjc3MvdG9rZW5pemVyLmZsZXg6CisKIDIwMTEtMDItMDcgIENyaXMgTmVja2FyICA8Y2Ru
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKaWFuIExpLgpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhbW1hci55CShyZXZpc2lvbiA3NzkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKICAgICBDU1NSdWxlTGlzdCogcnVsZUxpc3Q7CiAgICAgQ1NTUGFy
c2VyU2VsZWN0b3IqIHNlbGVjdG9yOwogICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+ID4qIHNlbGVjdG9yTGlzdDsKKyAgICBWZWN0b3I8T3duUHRyPENTU1NlbGVjdG9yTGlzdD4g
Piogc2ltcGxlU2VsZWN0b3JMaXN0OwogICAgIENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIG1h
cmdpbkJveDsKICAgICBDU1NTZWxlY3Rvcjo6UmVsYXRpb24gcmVsYXRpb247CiAgICAgTWVkaWFM
aXN0KiBtZWRpYUxpc3Q7CkBAIC0xOTAsNiArMTkxLDcgQEAgc3RhdGljIGludCBjc3N5eWxleChZ
WVNUWVBFKiB5eWx2YWwsIHZvaQogJXRva2VuIDxzdHJpbmc+IFVSSQogJXRva2VuIDxzdHJpbmc+
IEZVTkNUSU9OCiAldG9rZW4gPHN0cmluZz4gTk9URlVOQ1RJT04KKyV0b2tlbiA8c3RyaW5nPiBB
TllGVU5DVElPTgogCiAldG9rZW4gPHN0cmluZz4gVU5JQ09ERVJBTkdFCiAKQEAgLTI0Nyw2ICsy
NDksNyBAQCBzdGF0aWMgaW50IGNzc3l5bGV4KFlZU1RZUEUqIHl5bHZhbCwgdm9pCiAldHlwZSA8
c2VsZWN0b3I+IHNpbXBsZV9zZWxlY3RvcgogJXR5cGUgPHNlbGVjdG9yPiBzZWxlY3RvcgogJXR5
cGUgPHNlbGVjdG9yTGlzdD4gc2VsZWN0b3JfbGlzdAorJXR5cGUgPHNpbXBsZVNlbGVjdG9yTGlz
dD4gc2ltcGxlX3NlbGVjdG9yX2xpc3QKICV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3Jfd2l0aF90
cmFpbGluZ193aGl0ZXNwYWNlCiAldHlwZSA8c2VsZWN0b3I+IGNsYXNzCiAldHlwZSA8c2VsZWN0
b3I+IGF0dHJpYgpAQCAtMTIxMSwxMSArMTIxNCw1OSBAQCBwc2V1ZG86CiAgICAgICAgICAgICBD
U1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICAg
ICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CiAgICAgICAgICAgICAkJC0+c2V0
TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLSAgICAgICAgICAgICQkLT5zZXRTaW1w
bGVTZWxlY3RvcihwLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkNCktPnJlbGVhc2VTZWxlY3Rvcigp
KTsKKyAgICAgICAgICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gc2VsZWN0
b3JWZWN0b3I7CisgICAgICAgICAgICBzZWxlY3RvclZlY3Rvci5hcHBlbmQocC0+c2lua0Zsb2F0
aW5nU2VsZWN0b3IoJDQpKTsKKyAgICAgICAgICAgIE93blB0cjxDU1NTZWxlY3Rvckxpc3Q+IHNl
bGVjdG9yTGlzdCA9IGFkb3B0UHRyKG5ldyBDU1NTZWxlY3Rvckxpc3QpOworICAgICAgICAgICAg
c2VsZWN0b3JMaXN0LT5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yKTsKKyAgICAg
ICAgICAgIFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3JMaXN0PiA+KiBzaW1wbGVTZWxlY3Rvckxp
c3QgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yTGlzdCgpOworICAgICAgICAgICAgc2ltcGxl
U2VsZWN0b3JMaXN0LT5hcHBlbmQoc2VsZWN0b3JMaXN0LnJlbGVhc2UoKSk7CisgICAgICAgICAg
ICAkJC0+c2V0U2ltcGxlU2VsZWN0b3JMaXN0KHAtPnNpbmtGbG9hdGluZ1NlbGVjdG9yTGlzdChz
aW1wbGVTZWxlY3Rvckxpc3QpKTsKICAgICAgICAgICAgICQyLmxvd2VyKCk7CiAgICAgICAgICAg
ICAkJC0+c2V0VmFsdWUoJDIpOwogICAgICAgICB9CiAgICAgfQorICAgIC8vIHVzZWQgYnkgOi13
ZWJraXQtYW55CisgICAgfCAnOicgQU5ZRlVOQ1RJT04gbWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVj
dG9yX2xpc3QgbWF5YmVfc3BhY2UgJyknIHsKKyAgICAgICAgaWYgKCEkNCkKKyAgICAgICAgICAg
ICQkID0gMDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0
aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOworICAgICAgICAgICAgJCQgPSBwLT5jcmVhdGVG
bG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzKTsKKyAgICAgICAgICAgICQkLT5zZXRTaW1wbGVTZWxlY3Rvckxpc3QocC0+
c2lua0Zsb2F0aW5nU2VsZWN0b3JMaXN0KCQ0KSk7CisgICAgICAgICAgICAkMi5sb3dlcigpOwor
ICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKKyAgICAgICAgfQorICAgIH0KKyAgOworCitz
aW1wbGVfc2VsZWN0b3JfbGlzdDoKKyAgICBzaW1wbGVfc2VsZWN0b3IgeworICAgICAgICBpZiAo
ISQxKQorICAgICAgICAgICAgJCQgPSAwOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIENT
U1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgICAg
ICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3JMaXN0KCk7CisgICAgICAgICAgICBPd25Q
dHI8Q1NTU2VsZWN0b3JMaXN0PiBzZWxlY3Rvckxpc3QgPSBhZG9wdFB0cihuZXcgQ1NTU2VsZWN0
b3JMaXN0KTsKKyAgICAgICAgICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4g
c2VsZWN0b3JWZWN0b3I7CisgICAgICAgICAgICBzZWxlY3RvclZlY3Rvci5hcHBlbmQocC0+c2lu
a0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKKyAgICAgICAgICAgIHNlbGVjdG9yTGlzdC0+YWRvcHRT
ZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7CisgICAgICAgICAgICAkJC0+YXBwZW5kKHNl
bGVjdG9yTGlzdC5yZWxlYXNlKCkpOworICAgICAgICB9CisgICAgfQorICAgIHwgc2ltcGxlX3Nl
bGVjdG9yX2xpc3QgbWF5YmVfc3BhY2UgJywnICBtYXliZV9zcGFjZSBzaW1wbGVfc2VsZWN0b3Ig
eworICAgICAgICBpZiAoISQxIHx8ICEkNSkKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIq
PihwYXJzZXIpOworICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgIE93blB0cjxDU1NT
ZWxlY3Rvckxpc3Q+IHNlbGVjdG9yTGlzdCA9IGFkb3B0UHRyKG5ldyBDU1NTZWxlY3Rvckxpc3Qp
OworICAgICAgICAgICAgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiBzZWxlY3Rv
clZlY3RvcjsKKyAgICAgICAgICAgIHNlbGVjdG9yVmVjdG9yLmFwcGVuZChwLT5zaW5rRmxvYXRp
bmdTZWxlY3RvcigkNSkpOworICAgICAgICAgICAgc2VsZWN0b3JMaXN0LT5hZG9wdFNlbGVjdG9y
VmVjdG9yKHNlbGVjdG9yVmVjdG9yKTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQoc2VsZWN0b3JM
aXN0LnJlbGVhc2UoKSk7CisgICAgICAgIH0KKyAgICB9CiAgIDsKIAogZGVjbGFyYXRpb25fbGlz
dDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmNwcAkocmV2aXNpb24gNzc5MTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MSw2ICsyMSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NQYWdlUnVs
ZS5oIgorI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCiAKICNpbmNsdWRlICJDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiA3NzkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTA1LDYgKzU1MDUsNyBAQCBpbnQgQ1NT
UGFyc2VyOjpsZXgodm9pZCogeXlsdmFsV2l0aG91dFR5CiAgICAgY2FzZSBVTklDT0RFUkFOR0U6
CiAgICAgY2FzZSBGVU5DVElPTjoKICAgICBjYXNlIE5PVEZVTkNUSU9OOgorICAgIGNhc2UgQU5Z
RlVOQ1RJT046CiAgICAgICAgIHl5bHZhbC0+c3RyaW5nLmNoYXJhY3RlcnMgPSB0OwogICAgICAg
ICB5eWx2YWwtPnN0cmluZy5sZW5ndGggPSBsZW5ndGg7CiAgICAgICAgIGJyZWFrOwpAQCAtNTcx
Nyw2ICs1NzE4LDE4IEBAIFBhc3NPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlcjoK
ICAgICByZXR1cm4gYWRvcHRQdHIoc2VsZWN0b3IpOwogfQogCitWZWN0b3I8T3duUHRyPENTU1Nl
bGVjdG9yTGlzdD4gPiogQ1NTUGFyc2VyOjpjcmVhdGVGbG9hdGluZ1NlbGVjdG9yTGlzdCgpCit7
CisgICAgbV9mbG9hdGluZ1NlbGVjdG9yTGlzdCA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8T3duUHRy
PENTU1NlbGVjdG9yTGlzdD4gPik7CisgICAgcmV0dXJuIG1fZmxvYXRpbmdTZWxlY3Rvckxpc3Qu
Z2V0KCk7Cit9CisKK1Bhc3NPd25QdHI8VmVjdG9yPE93blB0cjxDU1NTZWxlY3Rvckxpc3Q+ID4g
PiBDU1NQYXJzZXI6OnNpbmtGbG9hdGluZ1NlbGVjdG9yTGlzdChWZWN0b3I8T3duUHRyPENTU1Nl
bGVjdG9yTGlzdD4gPiogc2VsZWN0b3JMaXN0KQoreworICAgIEFTU0VSVF9VTlVTRUQoc2VsZWN0
b3JMaXN0LCBzZWxlY3Rvckxpc3QgPT0gbV9mbG9hdGluZ1NlbGVjdG9yTGlzdCk7CisgICAgcmV0
dXJuIG1fZmxvYXRpbmdTZWxlY3Rvckxpc3QucmVsZWFzZSgpOworfQorCiBDU1NQYXJzZXJWYWx1
ZUxpc3QqIENTU1BhcnNlcjo6Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKQogewogICAgIENTU1Bh
cnNlclZhbHVlTGlzdCogbGlzdCA9IG5ldyBDU1NQYXJzZXJWYWx1ZUxpc3Q7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5oCShyZXZpc2lvbiA3NzkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDYgKzE3Miw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICBDU1NQYXJzZXJTZWxlY3RvciogY3JlYXRlRmxvYXRpbmdTZWxl
Y3RvcigpOwogICAgICAgICBQYXNzT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBzaW5rRmxvYXRp
bmdTZWxlY3RvcihDU1NQYXJzZXJTZWxlY3RvciopOworICAgICAgICBWZWN0b3I8T3duUHRyPENT
U1NlbGVjdG9yTGlzdD4gPiogY3JlYXRlRmxvYXRpbmdTZWxlY3Rvckxpc3QoKTsKKyAgICAgICAg
UGFzc093blB0cjxWZWN0b3I8T3duUHRyPENTU1NlbGVjdG9yTGlzdD4gPiA+IHNpbmtGbG9hdGlu
Z1NlbGVjdG9yTGlzdChWZWN0b3I8T3duUHRyPENTU1NlbGVjdG9yTGlzdD4gPiopOwogCiAgICAg
ICAgIENTU1BhcnNlclZhbHVlTGlzdCogY3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsKICAgICAg
ICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBzaW5rRmxvYXRpbmdWYWx1ZUxpc3QoQ1NTUGFyc2VyVmFs
dWVMaXN0Kik7CkBAIC0zMDMsNiArMzA1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBWZWN0b3I8UmVmUHRyPFN0eWxlQmFzZT4gPiBtX3BhcnNlZFN0eWxlT2JqZWN0czsKICAgICAg
ICAgVmVjdG9yPFJlZlB0cjxDU1NSdWxlTGlzdD4gPiBtX3BhcnNlZFJ1bGVMaXN0czsKICAgICAg
ICAgSGFzaFNldDxDU1NQYXJzZXJTZWxlY3Rvcio+IG1fZmxvYXRpbmdTZWxlY3RvcnM7CisgICAg
ICAgIE93blB0cjxWZWN0b3I8T3duUHRyPENTU1NlbGVjdG9yTGlzdD4gPiA+IG1fZmxvYXRpbmdT
ZWxlY3Rvckxpc3Q7CiAgICAgICAgIEhhc2hTZXQ8Q1NTUGFyc2VyVmFsdWVMaXN0Kj4gbV9mbG9h
dGluZ1ZhbHVlTGlzdHM7CiAgICAgICAgIEhhc2hTZXQ8Q1NTUGFyc2VyRnVuY3Rpb24qPiBtX2Zs
b2F0aW5nRnVuY3Rpb25zOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFs
dWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5o
CShyZXZpc2lvbiA3NzkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIHsgbV9zZWxlY3Rvci0+c2V0VmFsdWUo
dmFsdWUpOyB9CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFs
dWUpIHsgbV9zZWxlY3Rvci0+c2V0QXR0cmlidXRlKHZhbHVlKTsgfQogICAgIHZvaWQgc2V0QXJn
dW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5zZXRBcmd1bWVu
dCh2YWx1ZSk7IH0KLSAgICB2b2lkIHNldFNpbXBsZVNlbGVjdG9yKFBhc3NPd25QdHI8Q1NTU2Vs
ZWN0b3I+IHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldFNpbXBsZVNlbGVjdG9yKHZhbHVlKTsgfQor
ICAgIHZvaWQgc2V0U2ltcGxlU2VsZWN0b3JMaXN0KFBhc3NPd25QdHI8VmVjdG9yPE93blB0cjxD
U1NTZWxlY3Rvckxpc3Q+ID4gPiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5zZXRTaW1wbGVTZWxlY3Rv
ckxpc3QodmFsdWUpOyB9CiAgICAgdm9pZCBzZXRNYXRjaChDU1NTZWxlY3Rvcjo6TWF0Y2ggdmFs
dWUpIHsgbV9zZWxlY3Rvci0+bV9tYXRjaCA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXRSZWxhdGlv
bihDU1NTZWxlY3Rvcjo6UmVsYXRpb24gdmFsdWUpIHsgbV9zZWxlY3Rvci0+bV9yZWxhdGlvbiA9
IHZhbHVlOyB9CiAgICAgdm9pZCBzZXRGb3JQYWdlKCkgeyBtX3NlbGVjdG9yLT5zZXRGb3JQYWdl
KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkocmV2aXNpb24gNzc5MTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NTZWxl
Y3Rvci5oIgorI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogCiAjaW5jbHVkZSAiQ1NTT01V
dGlscy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNzgsOSArNzksMTUgQEAgaW5saW5l
IHVuc2lnbmVkIENTU1NlbGVjdG9yOjpzcGVjaWZpY2l0eQogICAgIGNhc2UgQ29udGFpbjoKICAg
ICBjYXNlIEJlZ2luOgogICAgIGNhc2UgRW5kOgotICAgICAgICBpZiAocHNldWRvVHlwZSgpID09
IFBzZXVkb05vdCAmJiBzaW1wbGVTZWxlY3RvcigpKQotICAgICAgICAgICAgcyArPSBzaW1wbGVT
ZWxlY3RvcigpLT5zcGVjaWZpY2l0eUZvck9uZVNlbGVjdG9yKCk7Ci0gICAgICAgIGVsc2UKKyAg
ICAgICAgaWYgKHNpbXBsZVNlbGVjdG9yTGlzdCgpKSB7CisgICAgICAgICAgICBpZiAocHNldWRv
VHlwZSgpID09IFBzZXVkb05vdCkgeworICAgICAgICAgICAgICAgIEFTU0VSVChzaW1wbGVTZWxl
Y3Rvckxpc3QoKS0+c2l6ZSgpID09IDEpOworICAgICAgICAgICAgICAgIHMgKz0gc2ltcGxlU2Vs
ZWN0b3JMaXN0KCktPmZpcnN0KCktPmZpcnN0KCktPnNwZWNpZmljaXR5Rm9yT25lU2VsZWN0b3Io
KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocHNldWRvVHlwZSgpID09IFBzZXVkb0FueSkgewor
ICAgICAgICAgICAgICAgIC8qIEZJWE1FIHNob3VsZCByZXR1cm4gdGhlIGhpZ2hlc3Qgc3BlY2l0
aXR5IG9mIG1hdGNoaW5nIHNlbGVjdG9yICovCisgICAgICAgICAgICAgICAgcyArPSAweDEwMDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzICs9IDB4MTAwOwog
ICAgIGNhc2UgTm9uZToKICAgICAgICAgYnJlYWs7CkBAIC0yMjQsNiArMjMxLDcgQEAgUHNldWRv
SWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVkb1R5cAogICAgIGNhc2UgUHNldWRvTGluazoK
ICAgICBjYXNlIFBzZXVkb1Zpc2l0ZWQ6CiAgICAgY2FzZSBQc2V1ZG9BbnlMaW5rOgorICAgIGNh
c2UgUHNldWRvQW55OgogICAgIGNhc2UgUHNldWRvQXV0b2ZpbGw6CiAgICAgY2FzZSBQc2V1ZG9I
b3ZlcjoKICAgICBjYXNlIFBzZXVkb0RyYWc6CkBAIC0yNzgsNiArMjg2LDcgQEAgc3RhdGljIEhh
c2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbAogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBhY3RpdmUsICgiYWN0aXZlIikpOwogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBhZnRlciwgKCJhZnRlciIpKTsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgYW55TGluaywgKCItd2Via2l0LWFueS1saW5rIikpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBhbnksICgiLXdlYmtpdC1hbnkoIikpOwog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBhdXRvZmlsbCwgKCItd2Via2l0
LWF1dG9maWxsIikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBiZWZv
cmUsICgiYmVmb3JlIikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBj
aGVja2VkLCAoImNoZWNrZWQiKSk7CkBAIC0zODIsNiArMzkxLDcgQEAgc3RhdGljIEhhc2hNYXA8
QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbAogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQo
YWN0aXZlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0FjdGl2ZSk7CiAgICAgICAgIG5hbWVU
b1BzZXVkb1R5cGUtPnNldChhZnRlci5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9BZnRlcik7
CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChhbnlMaW5rLmltcGwoKSwgQ1NTU2VsZWN0
b3I6OlBzZXVkb0FueUxpbmspOworICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoYW55Lmlt
cGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0FueSk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUt
PnNldChhdXRvZmlsbC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9BdXRvZmlsbCk7CiAgICAg
ICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChiZWZvcmUuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNl
dWRvQmVmb3JlKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGNoZWNrZWQuaW1wbCgp
LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2hlY2tlZCk7CkBAIC01NTgsNiArNTY4LDcgQEAgdm9pZCBD
U1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjbwogICAgIGNhc2UgUHNldWRvTGluazoK
ICAgICBjYXNlIFBzZXVkb1Zpc2l0ZWQ6CiAgICAgY2FzZSBQc2V1ZG9BbnlMaW5rOgorICAgIGNh
c2UgUHNldWRvQW55OgogICAgIGNhc2UgUHNldWRvQXV0b2ZpbGw6CiAgICAgY2FzZSBQc2V1ZG9I
b3ZlcjoKICAgICBjYXNlIFBzZXVkb0RyYWc6CkBAIC02NjgsOSArNjc5LDE2IEBAIFN0cmluZyBD
U1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KCkgY29uc3QKICAgICAgICAgfSBlbHNlIGlmIChjcy0+
bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MgfHwgY3MtPm1fbWF0Y2ggPT0gQ1NT
U2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzcykgewogICAgICAgICAgICAgc3RyICs9ICI6IjsKICAg
ICAgICAgICAgIHN0ciArPSBjcy0+dmFsdWUoKTsKLSAgICAgICAgICAgIGlmIChjcy0+cHNldWRv
VHlwZSgpID09IFBzZXVkb05vdCkgewotICAgICAgICAgICAgICAgIGlmIChDU1NTZWxlY3Rvciog
c3ViU2VsID0gY3MtPnNpbXBsZVNlbGVjdG9yKCkpCi0gICAgICAgICAgICAgICAgICAgIHN0ciAr
PSBzdWJTZWwtPnNlbGVjdG9yVGV4dCgpOworICAgICAgICAgICAgaWYgKGNzLT5wc2V1ZG9UeXBl
KCkgPT0gUHNldWRvTm90IHx8IGNzLT5wc2V1ZG9UeXBlKCkgPT0gUHNldWRvQW55KSB7CisgICAg
ICAgICAgICAgICAgaWYgKGNzLT5zaW1wbGVTZWxlY3Rvckxpc3QoKSkgeworICAgICAgICAgICAg
ICAgICAgICBib29sIGZpcnN0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChWZWN0
b3I8T3duUHRyPENTU1NlbGVjdG9yTGlzdD4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjcy0+c2lt
cGxlU2VsZWN0b3JMaXN0KCktPmJlZ2luKCk7IGl0ICE9IGNzLT5zaW1wbGVTZWxlY3Rvckxpc3Qo
KS0+ZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmlyc3QpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICIsIjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZpcnN0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gaXQt
PmdldCgpLT5maXJzdCgpLT5zZWxlY3RvclRleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBzdHIgKz0gIikiOwogICAgICAgICAg
ICAgfSBlbHNlIGlmIChjcy0+cHNldWRvVHlwZSgpID09IFBzZXVkb0xhbmcKICAgICAgICAgICAg
ICAgICAgICAgfHwgY3MtPnBzZXVkb1R5cGUoKSA9PSBQc2V1ZG9OdGhDaGlsZApAQCAtNzY3LDEw
ICs3ODUsMTAgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6c2V0QXJndW1lbnQoY29uc3QgQXRvbQogICAg
IG1fZGF0YS5tX3JhcmVEYXRhLT5tX2FyZ3VtZW50ID0gdmFsdWU7IAogfQogCi12b2lkIENTU1Nl
bGVjdG9yOjpzZXRTaW1wbGVTZWxlY3RvcihQYXNzT3duUHRyPENTU1NlbGVjdG9yPiB2YWx1ZSkK
K3ZvaWQgQ1NTU2VsZWN0b3I6OnNldFNpbXBsZVNlbGVjdG9yTGlzdChQYXNzT3duUHRyPFZlY3Rv
cjxPd25QdHI8Q1NTU2VsZWN0b3JMaXN0PiA+ID4gdmFsdWUpCiB7CiAgICAgY3JlYXRlUmFyZURh
dGEoKTsgCi0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fc2ltcGxlU2VsZWN0b3IgPSB2YWx1ZTsg
CisgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fc2ltcGxlU2VsZWN0b3JMaXN0ID0gdmFsdWU7IAog
fQogCiBib29sIENTU1NlbGVjdG9yOjpwYXJzZU50aCgpCkBAIC03OTEsNyArODA5LDcgQEAgYm9v
bCBDU1NTZWxlY3Rvcjo6bWF0Y2hOdGgoaW50IGNvdW50KQogCiBib29sIENTU1NlbGVjdG9yOjpp
c1NpbXBsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKHNpbXBsZVNlbGVjdG9yKCkgfHwgdGFnSGlzdG9y
eSgpIHx8IG1hdGNoZXNQc2V1ZG9FbGVtZW50KCkpCisgICAgaWYgKHNpbXBsZVNlbGVjdG9yTGlz
dCgpIHx8IHRhZ0hpc3RvcnkoKSB8fCBtYXRjaGVzUHNldWRvRWxlbWVudCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBpbnQgbnVtQ29uZGl0aW9ucyA9IDA7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VsZWN0b3IuaAkocmV2aXNpb24gNzc5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2lmbmRlZiBD
U1NTZWxlY3Rvcl9oCiAjZGVmaW5lIENTU1NlbGVjdG9yX2gKIAorI2luY2x1ZGUgIkNTU1NlbGVj
dG9yTGlzdC5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJSZW5kZXJT
dHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtMTI1LDYg
KzEyNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBzZXVkb0xpbmssCiAg
ICAgICAgICAgICBQc2V1ZG9WaXNpdGVkLAogICAgICAgICAgICAgUHNldWRvQW55TGluaywKKyAg
ICAgICAgICAgIFBzZXVkb0FueSwKICAgICAgICAgICAgIFBzZXVkb0F1dG9maWxsLAogICAgICAg
ICAgICAgUHNldWRvSG92ZXIsCiAgICAgICAgICAgICBQc2V1ZG9EcmFnLApAQCAtMjQ4LDEzICsy
NTAsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQXRvbWljU3Ry
aW5nKj4obV9oYXNSYXJlRGF0YSA/ICZtX2RhdGEubV9yYXJlRGF0YS0+bV92YWx1ZSA6ICZtX2Rh
dGEubV92YWx1ZSk7IH0KICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKCkg
Y29uc3Q7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJndW1lbnQoKSBjb25zdCB7IHJl
dHVybiBtX2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURhdGEtPm1fYXJndW1lbnQgOiBudWxs
QXRvbTsgfQotICAgICAgICBDU1NTZWxlY3Rvciogc2ltcGxlU2VsZWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURhdGEtPm1fc2ltcGxlU2VsZWN0b3Iu
Z2V0KCkgOiAwOyB9CisgICAgICAgIFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3JMaXN0PiA+KiBz
aW1wbGVTZWxlY3Rvckxpc3QoKSBjb25zdCB7IHJldHVybiBtX2hhc1JhcmVEYXRhID8gbV9kYXRh
Lm1fcmFyZURhdGEtPm1fc2ltcGxlU2VsZWN0b3JMaXN0LmdldCgpIDogMDsgfQogICAgICAgICAK
ICAgICAgICAgdm9pZCBzZXRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUpIHsgbV90YWcg
PSB2YWx1ZTsgfQogICAgICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYpOwog
ICAgICAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgICAg
IHZvaWQgc2V0QXJndW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJik7Ci0gICAgICAgIHZvaWQgc2V0
U2ltcGxlU2VsZWN0b3IoUGFzc093blB0cjxDU1NTZWxlY3Rvcj4pOworICAgICAgICB2b2lkIHNl
dFNpbXBsZVNlbGVjdG9yTGlzdChQYXNzT3duUHRyPFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3JM
aXN0PiA+ID4pOwogICAgICAgICAKICAgICAgICAgYm9vbCBwYXJzZU50aCgpOwogICAgICAgICBi
b29sIG1hdGNoTnRoKGludCBjb3VudCk7CkBAIC0zMTMsNyArMzE1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgQXRvbWljU3RyaW5nSW1wbCogbV92YWx1ZTsgLy8gUGxhaW4g
cG9pbnRlciB0byBrZWVwIHRoaW5ncyB1bmlmb3JtIHdpdGggdGhlIHVuaW9uLgogICAgICAgICAg
ICAgaW50IG1fYTsgLy8gVXNlZCBmb3IgOm50aC0qCiAgICAgICAgICAgICBpbnQgbV9iOyAvLyBV
c2VkIGZvciA6bnRoLSoKLSAgICAgICAgICAgIE93blB0cjxDU1NTZWxlY3Rvcj4gbV9zaW1wbGVT
ZWxlY3RvcjsgLy8gVXNlZCBmb3IgOm5vdC4KKyAgICAgICAgICAgIE93blB0cjxWZWN0b3I8T3du
UHRyPENTU1NlbGVjdG9yTGlzdD4gPiA+IG1fc2ltcGxlU2VsZWN0b3JMaXN0OyAvLyBVc2VkIGZv
ciA6bm90IGFuZCA6LXdlYmtpdC1hbnkuCiAgICAgICAgICAgICBRdWFsaWZpZWROYW1lIG1fYXR0
cmlidXRlOyAvLyB1c2VkIGZvciBhdHRyaWJ1dGUgc2VsZWN0b3IKICAgICAgICAgICAgIEF0b21p
Y1N0cmluZyBtX2FyZ3VtZW50OyAvLyBVc2VkIGZvciA6Y29udGFpbnMsIDpsYW5nIGFuZCA6bnRo
LSoKICAgICAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3Bw
CShyZXZpc2lvbiA3NzkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCiAKKyNpbmNsdWRlICJDU1NTZWxlY3Rvci5o
IgogI2luY2x1ZGUgIkNTU1BhcnNlclZhbHVlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC04MCw2ICs4MSwxNSBAQCB2b2lkIENTU1NlbGVjdG9yTGlzdDo6YWRvcHRTZWxlY3RvclZlY3Rv
CiAgICAgc2VsZWN0b3JWZWN0b3Iuc2hyaW5rKDApOwogfQogCitDU1NTZWxlY3RvciogQ1NTU2Vs
ZWN0b3JMaXN0OjpuZXh0KENTU1NlbGVjdG9yKiBjdXJyZW50KQoreworICAgIC8vIFNraXAgc3Vi
cGFydHMgb2YgY29tcG91bmQgc2VsZWN0b3JzLgorICAgIHdoaWxlICghY3VycmVudC0+aXNMYXN0
SW5UYWdIaXN0b3J5KCkpCisgICAgICAgIGN1cnJlbnQrKzsKKyAgICByZXR1cm4gY3VycmVudC0+
aXNMYXN0SW5TZWxlY3Rvckxpc3QoKSA/IDAgOiBjdXJyZW50ICsgMTsKK30KKworCiB2b2lkIENT
U1NlbGVjdG9yTGlzdDo6ZGVsZXRlU2VsZWN0b3JzKCkKIHsKICAgICBpZiAoIW1fc2VsZWN0b3JB
cnJheSkKQEAgLTExNCw5ICsxMjQsMTEgQEAgc3RhdGljIGJvb2wgZm9yRWFjaFRhZ1NlbGVjdG9y
KEZ1bmN0b3ImIAogICAgIGRvIHsKICAgICAgICAgaWYgKGZ1bmN0b3Ioc2VsZWN0b3IpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChDU1NTZWxlY3Rvciogc2ltcGxlU2Vs
ZWN0b3IgPSBzZWxlY3Rvci0+c2ltcGxlU2VsZWN0b3IoKSkgewotICAgICAgICAgICAgaWYgKGZv
ckVhY2hUYWdTZWxlY3RvcihmdW5jdG9yLCBzaW1wbGVTZWxlY3RvcikpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChWZWN0b3I8T3duUHRyPENTU1NlbGVjdG9yTGlz
dD4gPiogc2ltcGxlU2VsZWN0b3JMaXN0ID0gc2VsZWN0b3ItPnNpbXBsZVNlbGVjdG9yTGlzdCgp
KSB7CisgICAgICAgICAgICBmb3IgKFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3JMaXN0PiA+Ojpj
b25zdF9pdGVyYXRvciBpdCA9IHNpbXBsZVNlbGVjdG9yTGlzdC0+YmVnaW4oKTsgaXQgIT0gc2lt
cGxlU2VsZWN0b3JMaXN0LT5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgICAgIGlmIChmb3JF
YWNoVGFnU2VsZWN0b3IoZnVuY3RvciwgaXQtPmdldCgpLT5maXJzdCgpKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IHdo
aWxlICgoc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgJKHJldmlzaW9uIDc3OTE0KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMSArMjYs
MTQgQEAKICNpZm5kZWYgQ1NTU2VsZWN0b3JMaXN0X2gKICNkZWZpbmUgQ1NTU2VsZWN0b3JMaXN0
X2gKIAotI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgQ1NTUGFyc2VyU2VsZWN0b3I7CitjbGFz
cyBDU1NTZWxlY3RvcjsKICAgICAKIGNsYXNzIENTU1NlbGVjdG9yTGlzdCB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ1NTU2VsZWN0b3JMaXN0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CkBAIC01NiwxNCArNTksNiBAQCBwcml2YXRlOgogICAgIENTU1NlbGVjdG9yKiBtX3NlbGVjdG9y
QXJyYXk7CiB9OwogCi1pbmxpbmUgQ1NTU2VsZWN0b3IqIENTU1NlbGVjdG9yTGlzdDo6bmV4dChD
U1NTZWxlY3RvciogY3VycmVudCkKLXsKLSAgICAvLyBTa2lwIHN1YnBhcnRzIG9mIGNvbXBvdW5k
IHNlbGVjdG9ycy4KLSAgICB3aGlsZSAoIWN1cnJlbnQtPmlzTGFzdEluVGFnSGlzdG9yeSgpKQot
ICAgICAgICBjdXJyZW50Kys7Ci0gICAgcmV0dXJuIGN1cnJlbnQtPmlzTGFzdEluU2VsZWN0b3JM
aXN0KCkgPyAwIDogY3VycmVudCArIDE7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIENTU1NlbGVjdG9yTGlzdF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA3NzkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2NCwxNCArMjM2NCwzMiBA
QCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgIC8vIEhh
bmRsZSA6bm90IHVwIGZyb250LgogICAgICAgICBpZiAoc2VsLT5wc2V1ZG9UeXBlKCkgPT0gQ1NT
U2VsZWN0b3I6OlBzZXVkb05vdCkgewogICAgICAgICAgICAgLy8gY2hlY2sgdGhlIHNpbXBsZSBz
ZWxlY3RvcgotICAgICAgICAgICAgZm9yIChDU1NTZWxlY3Rvciogc3ViU2VsID0gc2VsLT5zaW1w
bGVTZWxlY3RvcigpOyBzdWJTZWw7IHN1YlNlbCA9IHN1YlNlbC0+dGFnSGlzdG9yeSgpKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gOm5vdCBjYW5ub3QgbmVzdC4gSSBkb24ndCByZWFsbHkga25vdyB3
aHkgdGhpcyBpcyBhCi0gICAgICAgICAgICAgICAgLy8gcmVzdHJpY3Rpb24gaW4gQ1NTMywgYnV0
IGl0IGlzLCBzbyBsZXQncyBob25vciBpdC4KLSAgICAgICAgICAgICAgICAvLyB0aGUgcGFyc2Vy
IGVuZm9yY2VzIHRoYXQgdGhpcyBuZXZlciBvY2N1cnMKLSAgICAgICAgICAgICAgICBBU1NFUlQo
IXN1YlNlbC0+c2ltcGxlU2VsZWN0b3IoKSk7CisgICAgICAgICAgICBpZiAoVmVjdG9yPE93blB0
cjxDU1NTZWxlY3Rvckxpc3Q+ID4qIHNpbXBsZVNlbGVjdG9yTGlzdCA9IHNlbC0+c2ltcGxlU2Vs
ZWN0b3JMaXN0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2ltcGxlU2VsZWN0b3JMaXN0LT5z
aXplKCkgIT0xKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgZm9yIChDU1NTZWxlY3Rvciogc3ViU2VsID0gc2ltcGxlU2VsZWN0b3JMaXN0LT5maXJz
dCgpLmdldCgpLT5maXJzdCgpOyBzdWJTZWw7IHN1YlNlbCA9IHN1YlNlbC0+dGFnSGlzdG9yeSgp
KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIDpub3QgY2Fubm90IG5lc3QuIEkgZG9uJ3QgcmVh
bGx5IGtub3cgd2h5IHRoaXMgaXMgYQorICAgICAgICAgICAgICAgICAgICAvLyByZXN0cmljdGlv
biBpbiBDU1MzLCBidXQgaXQgaXMsIHNvIGxldCdzIGhvbm9yIGl0LgorICAgICAgICAgICAgICAg
ICAgICAvLyB0aGUgcGFyc2VyIGVuZm9yY2VzIHRoYXQgdGhpcyBuZXZlciBvY2N1cnMKKyAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKCFzdWJTZWwtPnNpbXBsZVNlbGVjdG9yTGlzdCgpKTsKIAot
ICAgICAgICAgICAgICAgIGlmICghY2hlY2tPbmVTZWxlY3RvcihzdWJTZWwsIGUsIHNlbGVjdG9y
QXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVsZW1lbnRTdHlsZSwgZWxlbWVudFBhcmVudFN0
eWxlKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIGlmICghY2hlY2tPbmVTZWxlY3RvcihzdWJTZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFt
aWNQc2V1ZG8sIHRydWUsIGVsZW1lbnRTdHlsZSwgZWxlbWVudFBhcmVudFN0eWxlKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChzZWwtPnBzZXVkb1R5cGUoKSA9PSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQW55KSB7CisgICAgICAgICAgICBpZiAoVmVjdG9yPE93blB0cjxDU1NTZWxl
Y3Rvckxpc3Q+ID4qIHNpbXBsZVNlbGVjdG9yTGlzdCA9IHNlbC0+c2ltcGxlU2VsZWN0b3JMaXN0
KCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3JMaXN0
PiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNpbXBsZVNlbGVjdG9yTGlzdC0+YmVnaW4oKTsgaXQg
IT0gc2ltcGxlU2VsZWN0b3JMaXN0LT5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgICAgICAg
ICBib29sIHNpbXBsZVNlbGVjdG9yTWF0Y2hlcyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
IGZvciAoQ1NTU2VsZWN0b3IqIHN1YlNlbCA9IGl0LT5nZXQoKS0+Zmlyc3QoKTsgc3ViU2VsOyBz
dWJTZWwgPSBzdWJTZWwtPnRhZ0hpc3RvcnkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFjaGVja09uZVNlbGVjdG9yKHN1YlNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1Bz
ZXVkbywgdHJ1ZSwgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2ltcGxlU2VsZWN0b3JNYXRjaGVzID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHNpbXBsZVNl
bGVjdG9yTWF0Y2hlcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChkeW5hbWlj
UHNldWRvICE9IE5PUFNFVURPICYmIChSZW5kZXJTY3JvbGxiYXI6OnNjcm9sbGJhckZvclN0eWxl
UmVzb2x2ZSgpIHx8IGR5bmFtaWNQc2V1ZG8gPT0gU0NST0xMQkFSX0NPUk5FUiB8fCBkeW5hbWlj
UHNldWRvID09IFJFU0laRVIpKSB7CiAgICAgICAgICAgICAvLyBDU1Mgc2Nyb2xsYmFycyBtYXRj
aCBhIHNwZWNpZmljIHN1YnNldCBvZiBwc2V1ZG8gY2xhc3NlcywgYW5kIHRoZXkgaGF2ZSBzcGVj
aWFsaXplZCBydWxlcyBmb3IgZWFjaApAQCAtMjM4Niw2ICsyNDA0LDcgQEAgYm9vbCBDU1NTdHls
ZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OgogICAgICAgICBzd2l0Y2ggKHNlbC0+cHNldWRv
VHlwZSgpKSB7CiAgICAgICAgICAgICAvLyBQc2V1ZG8gY2xhc3NlczoKICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb05vdDoKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlBzZXVkb0FueToKICAgICAgICAgICAgICAgICBicmVhazsgLy8gQWxyZWFkeSBoYW5kbGVkIHVw
IGFib3ZlLgogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRW1wdHk6IHsKICAg
ICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHRydWU7CkBAIC0zMDkzLDEwICszMTEyLDE0IEBA
IHN0YXRpYyB2b2lkIGNvbGxlY3RJZHNBbmRTaWJsaW5nUnVsZXNGcm8KICAgICAgICAgZm9yIChD
U1NTZWxlY3Rvciogc2VsZWN0b3IgPSBydWxlRGF0YS5zZWxlY3RvcigpOyBzZWxlY3Rvcjsgc2Vs
ZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7CiAgICAgICAgICAgICBpZiAoc2VsZWN0
b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OklkICYmICFzZWxlY3Rvci0+dmFsdWUoKS5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICAgICAgaWRzLmFkZChzZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCkp
OwotICAgICAgICAgICAgaWYgKENTU1NlbGVjdG9yKiBzaW1wbGVTZWxlY3RvciA9IHNlbGVjdG9y
LT5zaW1wbGVTZWxlY3RvcigpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFzaW1wbGVTZWxl
Y3Rvci0+c2ltcGxlU2VsZWN0b3IoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHNpbXBsZVNlbGVj
dG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpJZCAmJiAhc2ltcGxlU2VsZWN0b3ItPnZhbHVl
KCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBpZHMuYWRkKHNpbXBsZVNlbGVjdG9y
LT52YWx1ZSgpLmltcGwoKSk7CisgICAgICAgICAgICBpZiAoVmVjdG9yPE93blB0cjxDU1NTZWxl
Y3Rvckxpc3Q+ID4qIHNpbXBsZVNlbGVjdG9yTGlzdCA9IHNlbGVjdG9yLT5zaW1wbGVTZWxlY3Rv
ckxpc3QoKSkgeworICAgICAgICAgICAgICAgIGZvciAoVmVjdG9yPE93blB0cjxDU1NTZWxlY3Rv
ckxpc3Q+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gIHNpbXBsZVNlbGVjdG9yTGlzdC0+YmVnaW4o
KTsgaXQgIT0gc2ltcGxlU2VsZWN0b3JMaXN0LT5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAg
ICAgICAgICBmb3IgKENTU1NlbGVjdG9yKiBzaW1wbGVTZWxlY3RvciA9IGl0LT5nZXQoKS0+Zmly
c3QoKTsgc2ltcGxlU2VsZWN0b3I7IHNpbXBsZVNlbGVjdG9yID0gc2ltcGxlU2VsZWN0b3ItPnRh
Z0hpc3RvcnkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFzaW1wbGVTZWxl
Y3Rvci0+c2ltcGxlU2VsZWN0b3JMaXN0KCkpOyAvLyBGSVhNRSBpcyB0aGlzIGNvcnJlY3QKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChzaW1wbGVTZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NT
ZWxlY3Rvcjo6SWQgJiYgIXNpbXBsZVNlbGVjdG9yLT52YWx1ZSgpLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZHMuYWRkKHNpbXBsZVNlbGVjdG9yLT52YWx1ZSgpLmlt
cGwoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAoc2VsZWN0b3ItPmlzU2libGluZ1NlbGVjdG9yKCkpCiAg
ICAgICAgICAgICAgICAgZm91bmRTaWJsaW5nU2VsZWN0b3IgPSB0cnVlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL3Rva2VuaXplci5mbGV4Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy90b2tlbml6ZXIuZmxleAkocmV2aXNpb24gNzc5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvdG9rZW5pemVyLmZsZXgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsNyBAQCBudGgg
ICAgICAgICAgICAgW1wrLV0/e2ludG51bX0qbihbXHRcclxuCiB7bnVtfSAgICAgICAgICAgICAg
ICAgICB7eXlUb2sgPSBGTE9BVFRPS0VOOyByZXR1cm4geXlUb2s7fQogCiAibm90KCIgICAgICAg
ICAgICAgICAgICB7eXlUb2sgPSBOT1RGVU5DVElPTjsgcmV0dXJuIHl5VG9rO30KKyItd2Via2l0
LWFueSgiICAgICAgICAgIHt5eVRvayA9IEFOWUZVTkNUSU9OOyByZXR1cm4geXlUb2s7fQogInVy
bCgie3d9e3N0cmluZ317d30iKSIge3l5VG9rID0gVVJJOyByZXR1cm4geXlUb2s7fQogInVybCgi
e3d9e3VybH17d30iKSIgICAge3l5VG9rID0gVVJJOyByZXR1cm4geXlUb2s7fQoge2lkZW50fSIo
IiAgICAgICAgICAgICAge3l5VG9rID0gRlVOQ1RJT047IHJldHVybiB5eVRvazt9CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NzkxNCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE3IEBACisyMDExLTAyLTA3ICBSw6ltaSBaYXJhICA8cmVtaS16YXJhQG1h
Yy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
d2Via2l0IHNob3VsZCBpbXBsZW1lbnQgLW1vei1hbnkgc2VsZWN0b3IgKGFzIC13ZWJraXQtYW55
IG9idmlvdXNseSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM4MDk1CisKKyAgICAgICAgKiBmYXN0L2Nzcy9jc3Mtc2VsZWN0b3ItdGV4dC1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9jc3MvY3NzLXNlbGVjdG9yLXRleHQuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2Nzcy9jc3Mtc2V0LXNlbGVjdG9yLXRleHQtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvY3NzL2Nzcy1zZXQtc2VsZWN0b3ItdGV4dC5odG1sOgorICAgICAgICAqIGZhc3Qv
Y3NzL3BzZXVkby1hbnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9w
c2V1ZG8tYW55Lmh0bWw6IEFkZGVkLgorCiAyMDExLTAyLTA3ICBDcmlzIE5lY2thciAgPGNkbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmlhbiBMaS4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY3NzL2Nzcy1zZWxlY3Rvci10ZXh0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3Mtc2VsZWN0b3ItdGV4dC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDc3OTE0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzLXNlbGVjdG9yLXRl
eHQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIFBBU1MgcGFy
c2VUaGVuU2VyaWFsaXplUnVsZSgnOnZpc2l0ZWQgeyAKIAogUEFTUyBwYXJzZVRoZW5TZXJpYWxp
emVSdWxlKCc6bGFuZyhhKSB7IH0nKSBpcyAnOmxhbmcoYSkgeyB9JwogUEFTUyBwYXJzZVRoZW5T
ZXJpYWxpemVSdWxlKCc6bm90KGEpIHsgfScpIGlzICc6bm90KGEpIHsgfScKK1BBU1MgcGFyc2VU
aGVuU2VyaWFsaXplUnVsZSgnOi13ZWJraXQtYW55KGEsYixwKSB7IH0nKSBpcyAnOi13ZWJraXQt
YW55KGEsYixwKSB7IH0nCiAKIFBBU1MgcGFyc2VUaGVuU2VyaWFsaXplUnVsZSgnOjphZnRlciB7
IH0nKSBpcyAnOjphZnRlciB7IH0nCiBQQVNTIHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJzo6YmVm
b3JlIHsgfScpIGlzICc6OmJlZm9yZSB7IH0nCkBAIC02NSw2ICs2NiwxMyBAQCBQQVNTIHBhcnNl
VGhlblNlcmlhbGl6ZVJ1bGUoJzo6LXdlYmtpdC1zCiBQQVNTIHBhcnNlVGhlblNlcmlhbGl6ZVJ1
bGUoJzo6LXdlYmtpdC1zbGlkZXItdGh1bWIgeyB9JykgaXMgJzo6LXdlYmtpdC1zbGlkZXItdGh1
bWIgeyB9JwogCiBQQVNTIHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJ2lucHV0Om5vdChbdHlwZT0i
ZmlsZSJdKTpmb2N1cyB7IH0nKSBpcyAnaW5wdXQ6bm90KFt0eXBlPSJmaWxlIl0pOmZvY3VzIHsg
fScKK1BBU1MgcGFyc2VUaGVuU2VyaWFsaXplUnVsZSgnOi13ZWJraXQtYW55KFt0eXBlPSJmaWxl
Il0pIHsgfScpIGlzICc6LXdlYmtpdC1hbnkoW3R5cGU9ImZpbGUiXSkgeyB9JworUEFTUyBwYXJz
ZVRoZW5TZXJpYWxpemVSdWxlKCc6LXdlYmtpdC1hbnkoOmhvdmVyKSB7IH0nKSBpcyAnOi13ZWJr
aXQtYW55KDpob3ZlcikgeyB9JworUEFTUyBwYXJzZVRoZW5TZXJpYWxpemVSdWxlKCdpbnB1dDot
d2Via2l0LWFueShbdHlwZT0iZmlsZSJdLDpob3Zlciw6Zm9jdXMpOmVuYWJsZWQgeyB9JykgaXMg
J2lucHV0Oi13ZWJraXQtYW55KFt0eXBlPSJmaWxlIl0sOmhvdmVyLDpmb2N1cyk6ZW5hYmxlZCB7
IH0nCitQQVNTIHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJzotd2Via2l0LWFueShpbnB1dFt0eXBl
PSJmaWxlIl0sYTpob3ZlcixidXR0b246Zm9jdXMpIHsgfScpIGlzICc6LXdlYmtpdC1hbnkoaW5w
dXRbdHlwZT0iZmlsZSJdLGE6aG92ZXIsYnV0dG9uOmZvY3VzKSB7IH0nCitQQVNTIHBhcnNlVGhl
blNlcmlhbGl6ZVJ1bGUoJzotd2Via2l0LWFueSguY2xhc3MxLmNsYXNzMi5jbGFzczMpIHsgfScp
IGlzICc6LXdlYmtpdC1hbnkoLmNsYXNzMS5jbGFzczIuY2xhc3MzKSB7IH0nCitQQVNTIHBhcnNl
VGhlblNlcmlhbGl6ZVJ1bGUoJzotd2Via2l0LWFueSguY2xhc3MxOmhvdmVyKSB7IH0nKSBpcyAn
Oi13ZWJraXQtYW55KC5jbGFzczE6aG92ZXIpIHsgfScKK1BBU1MgcGFyc2VUaGVuU2VyaWFsaXpl
UnVsZSgnOi13ZWJraXQtYW55KGEuY2xhc3MxLmNsYXNzMi5jbGFzczM6aG92ZXIpIHsgfScpIGlz
ICc6LXdlYmtpdC1hbnkoYS5jbGFzczEuY2xhc3MyLmNsYXNzMzpob3ZlcikgeyB9JwogCiBQQVNT
IHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJyo6YWN0aXZlIHsgfScpIGlzICc6YWN0aXZlIHsgfScK
IFBBU1MgcGFyc2VUaGVuU2VyaWFsaXplUnVsZSgnfGEgeyB9JykgaXMgJ2EgeyB9JwpAQCAtODAs
NiArODgsOCBAQCBQQVNTIHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJzpiZWZvcmUgeyB9CiBQQVNT
IHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJzpmaXJzdC1sZXR0ZXIgeyB9JykgaXMgJzo6Zmlyc3Qt
bGV0dGVyIHsgfScKIFBBU1MgcGFyc2VUaGVuU2VyaWFsaXplUnVsZSgnOmZpcnN0LWxpbmUgeyB9
JykgaXMgJzo6Zmlyc3QtbGluZSB7IH0nCiAKK1BBU1MgcGFyc2VUaGVuU2VyaWFsaXplUnVsZSgn
Oi13ZWJraXQtYW55KCAgICBhLmNsYXNzMSAgLCAgCSNpZCxbYXR0cl0gICkgeyB9JykgaXMgJzot
d2Via2l0LWFueShhLmNsYXNzMSwjaWQsW2F0dHJdKSB7IH0nCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
c3MvY3NzLXNlbGVjdG9yLXRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9jc3Mtc2VsZWN0b3ItdGV4dC5odG1sCShyZXZpc2lvbiA3NzkxNCkKKysrIExheW91dFRl
c3RzL2Zhc3QvY3NzL2Nzcy1zZWxlY3Rvci10ZXh0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDYgKzgyLDcgQEAgZGVidWcoJycpOwogCiB0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoIjpsYW5nKGEp
Iik7CiB0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoIjpub3QoYSkiKTsKK3Rlc3RTZWxlY3RvclJvdW5k
VHJpcCgiOi13ZWJraXQtYW55KGEsYixwKSIpOwogCiBkZWJ1ZygnJyk7CiAKQEAgLTEwOSw2ICsx
MTAsMTMgQEAgdGVzdFNlbGVjdG9yUm91bmRUcmlwKCI6Oi13ZWJraXQtc2xpZGVyLQogZGVidWco
JycpOwogCiB0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoJ2lucHV0Om5vdChbdHlwZT0iZmlsZSJdKTpm
b2N1cycpOwordGVzdFNlbGVjdG9yUm91bmRUcmlwKCc6LXdlYmtpdC1hbnkoW3R5cGU9ImZpbGUi
XSknKTsKK3Rlc3RTZWxlY3RvclJvdW5kVHJpcCgnOi13ZWJraXQtYW55KDpob3ZlciknKTsKK3Rl
c3RTZWxlY3RvclJvdW5kVHJpcCgnaW5wdXQ6LXdlYmtpdC1hbnkoW3R5cGU9ImZpbGUiXSw6aG92
ZXIsOmZvY3VzKTplbmFibGVkJyk7Cit0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoJzotd2Via2l0LWFu
eShpbnB1dFt0eXBlPSJmaWxlIl0sYTpob3ZlcixidXR0b246Zm9jdXMpJyk7Cit0ZXN0U2VsZWN0
b3JSb3VuZFRyaXAoJzotd2Via2l0LWFueSguY2xhc3MxLmNsYXNzMi5jbGFzczMpJyk7Cit0ZXN0
U2VsZWN0b3JSb3VuZFRyaXAoJzotd2Via2l0LWFueSguY2xhc3MxOmhvdmVyKScpOwordGVzdFNl
bGVjdG9yUm91bmRUcmlwKCc6LXdlYmtpdC1hbnkoYS5jbGFzczEuY2xhc3MyLmNsYXNzMzpob3Zl
ciknKTsKIAogZGVidWcoJycpOwogCkBAIC0xMzQsNiArMTQyLDEwIEBAIHNob3VsZEJlKCJwYXJz
ZVRoZW5TZXJpYWxpemVSdWxlKCc6Zmlyc3QKIAogZGVidWcoJycpOwogCitzaG91bGRCZSgicGFy
c2VUaGVuU2VyaWFsaXplUnVsZSgnOi13ZWJraXQtYW55KCAgICBhLmNsYXNzMSAgLCAgCSNpZCxb
YXR0cl0gICkgeyB9JykiLCInOi13ZWJraXQtYW55KGEuY2xhc3MxLCNpZCxbYXR0cl0pIHsgfSci
KTsKKworZGVidWcoJycpOworCiBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwogCiA8L3Njcmlw
dD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2Nzcy1zZXQtc2VsZWN0b3ItdGV4dC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzLXNldC1zZWxl
Y3Rvci10ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzc5MTQpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9jc3Mtc2V0LXNlbGVjdG9yLXRleHQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC01Niw2ICs1Niw3IEBAIFBBU1Mgc2V0VGhlblJlYWRTZWxlY3RvclRleHQoJzp2aXNpdGVk
JykKIAogUEFTUyBzZXRUaGVuUmVhZFNlbGVjdG9yVGV4dCgnOmxhbmcoYSknKSBpcyAnOmxhbmco
YSknCiBQQVNTIHNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCc6bm90KGEpJykgaXMgJzpub3QoYSkn
CitQQVNTIHNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCc6LXdlYmtpdC1hbnkoYSxiLHApJykgaXMg
Jzotd2Via2l0LWFueShhLGIscCknCiAKIFBBU1Mgc2V0VGhlblJlYWRTZWxlY3RvclRleHQoJzo6
YWZ0ZXInKSBpcyAnOjphZnRlcicKIFBBU1Mgc2V0VGhlblJlYWRTZWxlY3RvclRleHQoJzo6YmVm
b3JlJykgaXMgJzo6YmVmb3JlJwpAQCAtNzUsNiArNzYsMTMgQEAgUEFTUyBzZXRUaGVuUmVhZFNl
bGVjdG9yVGV4dCgnOjotd2Via2l0LQogUEFTUyBzZXRUaGVuUmVhZFNlbGVjdG9yVGV4dCgnOjot
d2Via2l0LXNsaWRlci10aHVtYicpIGlzICc6Oi13ZWJraXQtc2xpZGVyLXRodW1iJwogCiBQQVNT
IHNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCdpbnB1dDpub3QoW3R5cGU9ImZpbGUiXSk6Zm9jdXMn
KSBpcyAnaW5wdXQ6bm90KFt0eXBlPSJmaWxlIl0pOmZvY3VzJworUEFTUyBzZXRUaGVuUmVhZFNl
bGVjdG9yVGV4dCgnOi13ZWJraXQtYW55KFt0eXBlPSJmaWxlIl0pJykgaXMgJzotd2Via2l0LWFu
eShbdHlwZT0iZmlsZSJdKScKK1BBU1Mgc2V0VGhlblJlYWRTZWxlY3RvclRleHQoJzotd2Via2l0
LWFueSg6aG92ZXIpJykgaXMgJzotd2Via2l0LWFueSg6aG92ZXIpJworUEFTUyBzZXRUaGVuUmVh
ZFNlbGVjdG9yVGV4dCgnaW5wdXQ6LXdlYmtpdC1hbnkoW3R5cGU9ImZpbGUiXSw6aG92ZXIsOmZv
Y3VzKTplbmFibGVkJykgaXMgJ2lucHV0Oi13ZWJraXQtYW55KFt0eXBlPSJmaWxlIl0sOmhvdmVy
LDpmb2N1cyk6ZW5hYmxlZCcKK1BBU1Mgc2V0VGhlblJlYWRTZWxlY3RvclRleHQoJzotd2Via2l0
LWFueShpbnB1dFt0eXBlPSJmaWxlIl0sYTpob3ZlcixidXR0b246Zm9jdXMpJykgaXMgJzotd2Vi
a2l0LWFueShpbnB1dFt0eXBlPSJmaWxlIl0sYTpob3ZlcixidXR0b246Zm9jdXMpJworUEFTUyBz
ZXRUaGVuUmVhZFNlbGVjdG9yVGV4dCgnOi13ZWJraXQtYW55KC5jbGFzczEuY2xhc3MyLmNsYXNz
MyknKSBpcyAnOi13ZWJraXQtYW55KC5jbGFzczEuY2xhc3MyLmNsYXNzMyknCitQQVNTIHNldFRo
ZW5SZWFkU2VsZWN0b3JUZXh0KCc6LXdlYmtpdC1hbnkoLmNsYXNzMTpob3ZlciknKSBpcyAnOi13
ZWJraXQtYW55KC5jbGFzczE6aG92ZXIpJworUEFTUyBzZXRUaGVuUmVhZFNlbGVjdG9yVGV4dCgn
Oi13ZWJraXQtYW55KGEuY2xhc3MxLmNsYXNzMi5jbGFzczM6aG92ZXIpJykgaXMgJzotd2Via2l0
LWFueShhLmNsYXNzMS5jbGFzczIuY2xhc3MzOmhvdmVyKScKIAogUEFTUyBzZXRUaGVuUmVhZFNl
bGVjdG9yVGV4dCgnKjphY3RpdmUnKSBpcyAnOmFjdGl2ZScKIFBBU1Mgc2V0VGhlblJlYWRTZWxl
Y3RvclRleHQoJ3xhJykgaXMgJ2EnCkBAIC05MCw2ICs5OCw4IEBAIFBBU1Mgc2V0VGhlblJlYWRT
ZWxlY3RvclRleHQoJzpiZWZvcmUnKSAKIFBBU1Mgc2V0VGhlblJlYWRTZWxlY3RvclRleHQoJzpm
aXJzdC1sZXR0ZXInKSBpcyAnOjpmaXJzdC1sZXR0ZXInCiBQQVNTIHNldFRoZW5SZWFkU2VsZWN0
b3JUZXh0KCc6Zmlyc3QtbGluZScpIGlzICc6OmZpcnN0LWxpbmUnCiAKK1BBU1Mgc2V0VGhlblJl
YWRTZWxlY3RvclRleHQoJzotd2Via2l0LWFueSggICAgYS5jbGFzczEgICwgIAkjaWQsW2F0dHJd
ICApJykgaXMgJzotd2Via2l0LWFueShhLmNsYXNzMSwjaWQsW2F0dHJdKScKKwogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9jc3Mtc2V0LXNlbGVjdG9yLXRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9jc3Mtc2V0LXNlbGVjdG9yLXRleHQuaHRtbAkocmV2aXNpb24gNzc5
MTQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3Mtc2V0LXNlbGVjdG9yLXRleHQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtOTksNiArOTksNyBAQCBkZWJ1ZygnJyk7CiAKIHRlc3RTZWxlY3Rv
clJvdW5kVHJpcCgiOmxhbmcoYSkiKTsKIHRlc3RTZWxlY3RvclJvdW5kVHJpcCgiOm5vdChhKSIp
OwordGVzdFNlbGVjdG9yUm91bmRUcmlwKCI6LXdlYmtpdC1hbnkoYSxiLHApIik7CiAKIGRlYnVn
KCcnKTsKIApAQCAtMTI2LDYgKzEyNywxMyBAQCB0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoIjo6LXdl
YmtpdC1zbGlkZXItCiBkZWJ1ZygnJyk7CiAKIHRlc3RTZWxlY3RvclJvdW5kVHJpcCgnaW5wdXQ6
bm90KFt0eXBlPSJmaWxlIl0pOmZvY3VzJyk7Cit0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoJzotd2Vi
a2l0LWFueShbdHlwZT0iZmlsZSJdKScpOwordGVzdFNlbGVjdG9yUm91bmRUcmlwKCc6LXdlYmtp
dC1hbnkoOmhvdmVyKScpOwordGVzdFNlbGVjdG9yUm91bmRUcmlwKCdpbnB1dDotd2Via2l0LWFu
eShbdHlwZT0iZmlsZSJdLDpob3Zlciw6Zm9jdXMpOmVuYWJsZWQnKTsKK3Rlc3RTZWxlY3RvclJv
dW5kVHJpcCgnOi13ZWJraXQtYW55KGlucHV0W3R5cGU9ImZpbGUiXSxhOmhvdmVyLGJ1dHRvbjpm
b2N1cyknKTsKK3Rlc3RTZWxlY3RvclJvdW5kVHJpcCgnOi13ZWJraXQtYW55KC5jbGFzczEuY2xh
c3MyLmNsYXNzMyknKTsKK3Rlc3RTZWxlY3RvclJvdW5kVHJpcCgnOi13ZWJraXQtYW55KC5jbGFz
czE6aG92ZXIpJyk7Cit0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoJzotd2Via2l0LWFueShhLmNsYXNz
MS5jbGFzczIuY2xhc3MzOmhvdmVyKScpOwogCiBkZWJ1ZygnJyk7CiAKQEAgLTE1MSw2ICsxNTks
MTAgQEAgc2hvdWxkQmUoInNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCc6ZmlycwogCiBkZWJ1Zygn
Jyk7CiAKK3Nob3VsZEJlKCJzZXRUaGVuUmVhZFNlbGVjdG9yVGV4dCgnOi13ZWJraXQtYW55KCAg
ICBhLmNsYXNzMSAgLCAgCSNpZCxbYXR0cl0gICknKSIsIic6LXdlYmtpdC1hbnkoYS5jbGFzczEs
I2lkLFthdHRyXSknIik7CisKK2RlYnVnKCcnKTsKKwogc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tYW55LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tYW55
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVk
by1hbnktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACitUaGlzIHRl
c3QgdGhlIDotd2Via2l0LWFueSBzZWxlY3RvciBpbiB2YXJpb3VzIHNjZW5hcmlvcy4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK3RoaXMgaXMgR1JFRU4KKwordGhpcyBpcyBHUkVF
TgordGhpcyBpcyBHUkVFTgorCit0aGlzIGlzIFJFRAorCit0aGlzIGlzIEdSRUVOCisKK3RoaXMg
aXMgUkVECit0aGlzIGlzIEdSRUVOCit0aGlzIGlzIFJFRAorCitDJ2VzdCBWRVJUCisKK3RoaXMg
aXMgUkVECisKK3RoaXMgaXMgUkVECisKK3RoaXMgaXMgR1JFRU4KKwordGhpcyBpcyBSRUQKKwor
dGhpcyBpcyBSRUQKKwordGhpcyBpcyBHUkVFTgorCit0aGlzIGlzIFJFRAordGhpcyBpcyBHUkVF
TgordGhpcyBpcyBHUkVFTgordGhpcyBpcyBSRUQKK3RoaXMgaXMgR1JFRU4KK3RoaXMgaXMgR1JF
RU4KK3RoaXMgaXMgR1JFRU4gd2hlbiBob3ZlcmVkCisKK3RoaXMgaXMgR1JFRU4KKwordGhpcyBp
cyBHUkVFTgorCisKK1Rlc3QgOi13ZWJraXQtYW55IHdpdGggZWxlbWVudCBzZWxlY3RvcnMgCitQ
QVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFBy
b3BlcnR5VmFsdWUoJ2NvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworUEFTUyBkb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdj
b2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSBpcyAncmdi
KDAsIDEyOCwgMCknCitUZXN0IDotd2Via2l0LWFueSB3aXRoIGNsYXNzLCBpZCBhbmQgYXR0cmli
dXRlIHNlbGVjdG9ycyAKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCkn
CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdl
dFByb3BlcnR5VmFsdWUoJ2NvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDApJworUEFTUyBkb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVl
KCdjb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSBpcyAn
cmdiKDAsIDEyOCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDAp
JworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1Rlc3QgOi13ZWJr
aXQtYW55IHdpdGggbXVsdGlwbGUgY2xhc3Mgc2VsZWN0b3JzIAorUEFTUyBkb2N1bWVudC5kZWZh
dWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xv
cicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSBpcyAncmdiKDI1
NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWws
IG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworUEFT
UyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9w
ZXJ0eVZhbHVlKCdjb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVm
YXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29s
b3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykgaXMgJ3JnYigw
LCAxMjgsIDApJworVGVzdCBtdWx0aXBsZSA6LXdlYmtpdC1hbnkgc2VsZWN0b3JzIAorUEFTUyBk
b2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0
eVZhbHVlKCdjb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3In
KSBpcyAncmdiKDAsIDEyOCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykgaXMgJ3JnYigwLCAx
MjgsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBu
dWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1Mg
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgnY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1
bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9y
JykgaXMgJ3JnYigwLCAxMjgsIDApJworVGVzdCA6LXdlYmtpdC1hbnkgYW5kIGR5bmFtaWMgcHNl
dWRvIHNlbGVjdG9ycyAKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZShlbGhvdmVyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpIGlzICdyZ2IoMjU1LCAw
LCAwKScKK1Rlc3QgaW52YWxpZCA6LXdlYmtpdC1hbnkgc2VsZWN0b3JzIAorUEFTUyBkb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVl
KCdjb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSBpcyAn
cmdiKDAsIDEyOCwgMCknCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorRkFJTCBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVs
aG92ZXIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykgc2hvdWxkIGJlIHJnYigwLCAx
MjgsIDApLiBXYXMgcmdiKDI1NSwgMCwgMCkuCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3Nz
L3BzZXVkby1hbnkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1
ZG8tYW55Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8t
YW55Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTgzIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c3R5bGU+CisKKyN0ZXN0cyBzcGFuIHsgY29sb3I6IHJlZDsgfQorCisjdGVzdDEgOi13ZWJraXQt
YW55KHAsIGRpdiwgaDEpIHNwYW4geyBjb2xvcjogZ3JlZW47IH0KKworI3Rlc3QyIDotd2Via2l0
LWFueShwLnRlc3QyY2xhc3MsIGRpdiN0ZXN0MmRpdiwgaDFbbGFuZz0iZnIiXSkgc3BhbiB7IGNv
bG9yOiBncmVlbjsgfQorCisjdGVzdDMgOi13ZWJraXQtYW55KC50ZXN0M2NsYXNzMS50ZXN0M2Ns
YXNzMiwgcC50ZXN0M2NsYXNzMXAudGVzdDNjbGFzczJwKSBzcGFuIHsgY29sb3I6IGdyZWVuOyB9
CisKKyN0ZXN0NCA6LXdlYmtpdC1hbnkob2wsIHVsKSA6LXdlYmtpdC1hbnkob2wsdWwpIGxpIHNw
YW4geyBjb2xvcjogZ3JlZW47IH0KKworI3Rlc3Q1IDotd2Via2l0LWFueShwOmhvdmVyKSBzcGFu
IHsgY29sb3I6IGdyZWVuIH0KKworI3Rlc3Q2IHNwYW4geyBjb2xvcjogZ3JlZW4gfTsKKyN0ZXN0
NiA6LXdlYmtpdC1hbnkoKSBzcGFuIHsgY29sb3I6IHJlZDsgfQorI3Rlc3Q2IDotd2Via2l0LWFu
eShkaXYgcCkgc3BhbiB7IGNvbG9yOiByZWQ7IH0KKyN0ZXN0NiA6LXdlYmtpdC1hbnkoZGl2ID4g
cCkgc3BhbiB7IGNvbG9yOiByZWQ7IH0KKyN0ZXN0NiA6LXdlYmtpdC1hbnkoZGl2ICsgcCkgc3Bh
biB7IGNvbG9yOiByZWQ7IH0KKyN0ZXN0NiA6LXdlYmtpdC1hbnkoZGl2IH4gcCkgc3BhbiB7IGNv
bG9yOiByZWQ7IH0KKyN0ZXN0NiA6LXdlYmtpdC1hbnkocCwgKSBzcGFuIHsgY29sb3I6IHJlZDsg
fQorI3Rlc3Q2IDotd2Via2l0LWFueSgsIHApIHNwYW4geyBjb2xvcjogcmVkOyB9CisKKzwvc3R5
bGU+CisKKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisKKzxkaXYg
aWQ9InRlc3RzIj4KKwk8ZGl2IGlkPSJ0ZXN0MSI+CisJCTxwPnRoaXMgaXMgPHNwYW4gaWQ9InNw
YW5fMV9wIj5HUkVFTjwvc3Bhbj48L3A+CisJCTxkaXY+dGhpcyBpcyA8c3BhbiBpZD0ic3Bhbl8x
X2RpdiI+R1JFRU48L3NwYW4+PC9kaXY+CisJCTxoMT50aGlzIGlzIDxzcGFuIGlkPSJzcGFuXzFf
aDEiPkdSRUVOPC9zcGFuPjwvaDE+CisJPC9kaXY+CisJCisJPGRpdiBpZD0idGVzdDIiPgorCQk8
cD50aGlzIGlzIDxzcGFuIGlkPSJzcGFuXzJfcF9yZWQiPlJFRDwvc3Bhbj48L3A+CisJCTxwIGNs
YXNzPSJ0ZXN0MmNsYXNzIj50aGlzIGlzIDxzcGFuIGlkPSJzcGFuXzJfcCI+R1JFRU48L3NwYW4+
PC9wPgorCQk8ZGl2PnRoaXMgaXMgPHNwYW4gaWQ9InNwYW5fMl9kaXZfcmVkIj5SRUQ8L3NwYW4+
PC9kaXY+CisJCTxkaXYgaWQ9InRlc3QyZGl2Ij50aGlzIGlzIDxzcGFuIGlkPSJzcGFuXzJfZGl2
Ij5HUkVFTjwvc3Bhbj48L2Rpdj4KKwkJPGgxPnRoaXMgaXMgPHNwYW4gaWQ9InNwYW5fMl9oMV9y
ZWQiPlJFRDwvc3Bhbj48L2gxPgorCQk8aDEgbGFuZz0iZnIiPkMnZXN0IDxzcGFuIGlkPSJzcGFu
XzJfaDEiPlZFUlQ8L3NwYW4+PC9oMT4KKwk8L2Rpdj4KKwkKKwk8ZGl2IGlkPSJ0ZXN0MyI+CisJ
CTxwIGNsYXNzPSJ0ZXN0M2NsYXNzMSI+dGhpcyBpcyA8c3BhbiBpZD0ic3Bhbl8zX2NsYXNzMV9y
ZWQiPlJFRDwvc3Bhbj48L3A+CisJCTxwIGNsYXNzPSJ0ZXN0M2NsYXNzMiI+dGhpcyBpcyA8c3Bh
biBpZD0ic3Bhbl8zX2NsYXNzMl9yZWQiPlJFRDwvc3Bhbj48L3A+CisJCTxwIGNsYXNzPSJ0ZXN0
M2NsYXNzMSB0ZXN0M2NsYXNzMiI+dGhpcyBpcyA8c3BhbiBpZD0ic3Bhbl8zX2NsYXNzIj5HUkVF
Tjwvc3Bhbj48L3A+CisJCTxwIGNsYXNzPSJ0ZXN0M2NsYXNzMXAiPnRoaXMgaXMgPHNwYW4gaWQ9
InNwYW5fM19jbGFzczFwX3JlZCI+UkVEPC9zcGFuPjwvcD4KKwkJPHAgY2xhc3M9InRlc3QzY2xh
c3MycCI+dGhpcyBpcyA8c3BhbiBpZD0ic3Bhbl8zX2NsYXNzMnBfcmVkIj5SRUQ8L3NwYW4+PC9w
PgorCQk8cCBjbGFzcz0idGVzdDNjbGFzczFwIHRlc3QzY2xhc3MycCI+dGhpcyBpcyA8c3BhbiBp
ZD0ic3Bhbl8zX2NsYXNzcCI+R1JFRU48L3NwYW4+PC9wPgorCTwvZGl2PgorCQorCTxkaXYgaWQ9
InRlc3Q0Ij4KKwkJPG9sPgorCQkJPGxpPnRoaXMgaXMgPHNwYW4gaWQ9InNwYW5fNF9yZWQxIj5S
RUQ8L3NwYW4+PC9saT4KKwkJCTxsaT4KKwkJCQk8b2w+CisJCQkJCTxsaT50aGlzIGlzIDxzcGFu
IGlkPSJzcGFuXzRfb2xvbCI+R1JFRU48L3NwYW4+PC9saT4KKwkJCQk8L29sPgorCQkJPC9saT4K
KwkJCTxsaT4KKwkJCQk8dWw+CisJCQkJCTxsaT50aGlzIGlzIDxzcGFuIGlkPSJzcGFuXzRfb2x1
bCI+R1JFRU48L3NwYW4+PC9saT4KKwkJCQk8L3VsPgorCQkJPC9saT4KKwkJPC9vbD4KKwkJPHVs
PgorCQkJPGxpPnRoaXMgaXMgPHNwYW4gaWQ9InNwYW5fNF9yZWQyIj5SRUQ8L3NwYW4+PC9saT4K
KwkJCTxsaT4KKwkJCQk8b2w+CisJCQkJCTxsaT50aGlzIGlzIDxzcGFuIGlkPSJzcGFuXzRfdWxv
bCI+R1JFRU48L3NwYW4+PC9saT4KKwkJCQk8L29sPgorCQkJPC9saT4KKwkJCTxsaT4KKwkJCQk8
dWw+CisJCQkJCTxsaT50aGlzIGlzIDxzcGFuIGlkPSJzcGFuXzRfdWx1bCI+R1JFRU48L3NwYW4+
PC9saT4KKwkJCQk8L3VsPgorCQkJPC9saT4KKwkJPC91bD4KKwk8L2Rpdj4KKwkKKwk8ZGl2IGlk
PSJ0ZXN0NSI+CisJCTxwIGlkPSJwXzUiPnRoaXMgaXMgPHNwYW4gaWQ9InNwYW5fNSI+R1JFRU48
L3NwYW4+IHdoZW4gaG92ZXJlZDwvcD4KKwk8L2Rpdj4KKwkKKwk8ZGl2IGlkPSJ0ZXN0NiI+CisJ
CTxkaXY+PHA+dGhpcyBpcyA8c3BhbiBpZD0ic3Bhbl82XzEiPkdSRUVOPC9zcGFuPjwvcD48L2Rp
dj4KKwkJPHA+dGhpcyBpcyA8c3BhbiBpZD0ic3Bhbl82XzIiPkdSRUVOPC9zcGFuPjwvcD4KKwk8
L2Rpdj4KKzwvZGl2PgorCis8YnI+Cis8c2NyaXB0PgorCis8L3NjcmlwdD4KKworPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1RoaXMgdGVzdCB0aGUgOi13
ZWJraXQtYW55IHNlbGVjdG9yIGluIHZhcmlvdXMgc2NlbmFyaW9zLicpOworCitkZWJ1ZygiVGVz
dCA6LXdlYmtpdC1hbnkgd2l0aCBlbGVtZW50IHNlbGVjdG9ycyAiKTsKK2VsID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNwYW5fMV9wIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSIs
ICIncmdiKDAsIDEyOCwgMCknIik7CitlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFu
XzFfZGl2Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSIsICIncmdiKDAsIDEyOCwgMCkn
Iik7CitlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuXzFfaDEiKTsKK3Nob3VsZEJl
KCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9w
ZXJ0eVZhbHVlKCdjb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKKworZGVidWcoIlRlc3Qg
Oi13ZWJraXQtYW55IHdpdGggY2xhc3MsIGlkIGFuZCBhdHRyaWJ1dGUgc2VsZWN0b3JzICIpOwor
ZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Bhbl8yX3BfcmVkIik7CitzaG91bGRCZSgi
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgnY29sb3InKSIsICIncmdiKDI1NSwgMCwgMCknIik7CitlbCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzcGFuXzJfZGl2X3JlZCIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1
bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9y
JykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOworZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
c3Bhbl8yX2gxX3JlZCIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykiLCAiJ3JnYigyNTUs
IDAsIDApJyIpOworZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Bhbl8yX3AiKTsKK3No
b3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKK2VsID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwYW5fMl9kaXYiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdj
b2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKK2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInNwYW5fMl9oMSIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykiLCAiJ3JnYigwLCAx
MjgsIDApJyIpOworCitkZWJ1ZygiVGVzdCA6LXdlYmtpdC1hbnkgd2l0aCBtdWx0aXBsZSBjbGFz
cyBzZWxlY3RvcnMgIik7CitlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuXzNfY2xh
c3MxX3JlZCIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykiLCAiJ3JnYigyNTUsIDAsIDAp
JyIpOworZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Bhbl8zX2NsYXNzMl9yZWQiKTsK
K3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxs
KS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKK2VsID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwYW5fM19jbGFzcyIpOworc2hvdWxkQmUoImRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFs
dWUoJ2NvbG9yJykiLCAiJ3JnYigwLCAxMjgsIDApJyIpOworZWwgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic3Bhbl8zX2NsYXNzMXBfcmVkIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3In
KSIsICIncmdiKDI1NSwgMCwgMCknIik7CitlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
cGFuXzNfY2xhc3MycF9yZWQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpIiwgIidyZ2Io
MjU1LCAwLCAwKSciKTsKK2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwYW5fM19jbGFz
c3AiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVs
LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsK
KworZGVidWcoIlRlc3QgbXVsdGlwbGUgOi13ZWJraXQtYW55IHNlbGVjdG9ycyAiKTsKK2VsID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwYW5fNF9yZWQxIik7CitzaG91bGRCZSgiZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1
ZSgnY29sb3InKSIsICIncmdiKDI1NSwgMCwgMCknIik7CitlbCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJzcGFuXzRfb2xvbCIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykiLCAiJ3Jn
YigwLCAxMjgsIDApJyIpOworZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Bhbl80X29s
dWwiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVs
LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsK
K2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwYW5fNF9yZWQyIik7CitzaG91bGRCZSgi
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgnY29sb3InKSIsICIncmdiKDI1NSwgMCwgMCknIik7CitlbCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzcGFuXzRfdWxvbCIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJyki
LCAiJ3JnYigwLCAxMjgsIDApJyIpOworZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Bh
bl80X3VsdWwiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0
eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAw
KSciKTsKKworZGVidWcoIlRlc3QgOi13ZWJraXQtYW55IGFuZCBkeW5hbWljIHBzZXVkbyBzZWxl
Y3RvcnMgIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisJZWxob3ZlciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuXzUiKTsKKwlzaG91bGRCZSgiZG9jdW1lbnQu
ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGhvdmVyLCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCdjb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKKwl2YXIgdGFyZ2V0RWxlbSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJwXzUiKTsKKwlldmVudFNlbmRlci5tb3VzZU1vdmVUbyh0
YXJnZXRFbGVtLm9mZnNldExlZnQgKyAxLCB0YXJnZXRFbGVtLm9mZnNldFRvcCArIDEpOworICAg
IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIAlzaG91bGRCZSgiZG9jdW1lbnQu
ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGhvdmVyLCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCdjb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKKyAgICAJd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9LDUwKTsKKyAgICB3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitkZWJ1ZygiVGVzdCBpbnZhbGlk
IDotd2Via2l0LWFueSBzZWxlY3RvcnMgIik7CitlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJzcGFuXzZfMSIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykiLCAiJ3JnYigwLCAxMjgs
IDApJyIpOworZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Bhbl82XzIiKTsKK3Nob3Vs
ZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdjb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKKworZGVidWcoJycp
OworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86131</attachid>
            <date>2011-03-17 20:11:48 -0700</date>
            <delta_ts>2011-03-22 01:02:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38095-20110318141144.patch</filename>
            <type>text/plain</type>
            <size>40815</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE0MjUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5MDBiZTQ3NjUzY2UzZWMzZDkwMjA1
NjhmNDdkNjFhOGEyM2VmZmE4Li4yZTk3ODI5MGExZTUwYjQ1ZTRhZDZhZTUyYmVkYTQ1NTIxMDMz
OGE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDMtMTcgIE9qYW4gVmFmYWkgIDxvamFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICB3ZWJraXQgc2hvdWxkIGltcGxlbWVudCAtbW96LWFueSBzZWxlY3RvciAoYXMgLXdl
YmtpdC1hbnkgb2J2aW91c2x5KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzgwOTUKKworICAgICAgICAqIGZhc3QvY3NzL2Nzcy1zZWxlY3Rvci10ZXh0
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Nzcy9jc3Mtc2VsZWN0b3ItdGV4dC5odG1s
OgorICAgICAgICAqIGZhc3QvY3NzL2Nzcy1zZXQtc2VsZWN0b3ItdGV4dC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9jc3MvY3NzLXNldC1zZWxlY3Rvci10ZXh0Lmh0bWw6CisgICAgICAg
ICogZmFzdC9jc3MvcHNldWRvLWFueS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY3NzL3BzZXVkby1hbnkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vU2VsZWN0
b3JBUEkvbm90LXN1cHBvcnRlZC1uYW1lc3BhY2UtaW4tc2VsZWN0b3ItZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3QvZG9tL1NlbGVjdG9yQVBJL25vdC1zdXBwb3J0ZWQtbmFtZXNwYWNlLWlu
LXNlbGVjdG9yLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vU2VsZWN0b3JBUEkvdW5rbm93bi1w
c2V1ZG8tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9TZWxlY3RvckFQ
SS91bmtub3duLXBzZXVkby5odG1sOiBBZGRlZC4KKwogMjAxMS0wMy0xNyAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzLXNlbGVjdG9yLXRleHQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzLXNlbGVjdG9yLXRleHQtZXhwZWN0ZWQu
dHh0CmluZGV4IGE1OTVmNjg2MTdhYWJlYzMyODU1MjY0ZjU3ZTQzZTQ3Yzc1NmJkNjkuLjcyN2I0
NWI1ZTViOTc0YTlkMGI3YzhiOTk0YzNlNTc1NmUxYzQ5M2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzL2Nzcy1zZWxlY3Rvci10ZXh0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9jc3Mtc2VsZWN0b3ItdGV4dC1leHBlY3RlZC50eHQKQEAgLTQ2LDYgKzQ2
LDcgQEAgUEFTUyBwYXJzZVRoZW5TZXJpYWxpemVSdWxlKCc6dmlzaXRlZCB7IH0nKSBpcyAnOnZp
c2l0ZWQgeyB9JwogCiBQQVNTIHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJzpsYW5nKGEpIHsgfScp
IGlzICc6bGFuZyhhKSB7IH0nCiBQQVNTIHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJzpub3QoYSkg
eyB9JykgaXMgJzpub3QoYSkgeyB9JworUEFTUyBwYXJzZVRoZW5TZXJpYWxpemVSdWxlKCc6LXdl
YmtpdC1hbnkoYSxiLHApIHsgfScpIGlzICc6LXdlYmtpdC1hbnkoYSxiLHApIHsgfScKIAogUEFT
UyBwYXJzZVRoZW5TZXJpYWxpemVSdWxlKCc6OmFmdGVyIHsgfScpIGlzICc6OmFmdGVyIHsgfScK
IFBBU1MgcGFyc2VUaGVuU2VyaWFsaXplUnVsZSgnOjpiZWZvcmUgeyB9JykgaXMgJzo6YmVmb3Jl
IHsgfScKQEAgLTY1LDYgKzY2LDEzIEBAIFBBU1MgcGFyc2VUaGVuU2VyaWFsaXplUnVsZSgnOjot
d2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb24geyB9JykgaXMgJzo6LXdlCiBQQVNTIHBh
cnNlVGhlblNlcmlhbGl6ZVJ1bGUoJzo6LXdlYmtpdC1zbGlkZXItdGh1bWIgeyB9JykgaXMgJzo6
LXdlYmtpdC1zbGlkZXItdGh1bWIgeyB9JwogCiBQQVNTIHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUo
J2lucHV0Om5vdChbdHlwZT0iZmlsZSJdKTpmb2N1cyB7IH0nKSBpcyAnaW5wdXQ6bm90KFt0eXBl
PSJmaWxlIl0pOmZvY3VzIHsgfScKK1BBU1MgcGFyc2VUaGVuU2VyaWFsaXplUnVsZSgnOi13ZWJr
aXQtYW55KFt0eXBlPSJmaWxlIl0pIHsgfScpIGlzICc6LXdlYmtpdC1hbnkoW3R5cGU9ImZpbGUi
XSkgeyB9JworUEFTUyBwYXJzZVRoZW5TZXJpYWxpemVSdWxlKCc6LXdlYmtpdC1hbnkoOmhvdmVy
KSB7IH0nKSBpcyAnOi13ZWJraXQtYW55KDpob3ZlcikgeyB9JworUEFTUyBwYXJzZVRoZW5TZXJp
YWxpemVSdWxlKCdpbnB1dDotd2Via2l0LWFueShbdHlwZT0iZmlsZSJdLDpob3Zlciw6Zm9jdXMp
OmVuYWJsZWQgeyB9JykgaXMgJ2lucHV0Oi13ZWJraXQtYW55KFt0eXBlPSJmaWxlIl0sOmhvdmVy
LDpmb2N1cyk6ZW5hYmxlZCB7IH0nCitQQVNTIHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJzotd2Vi
a2l0LWFueShpbnB1dFt0eXBlPSJmaWxlIl0sYTpob3ZlcixidXR0b246Zm9jdXMpIHsgfScpIGlz
ICc6LXdlYmtpdC1hbnkoaW5wdXRbdHlwZT0iZmlsZSJdLGE6aG92ZXIsYnV0dG9uOmZvY3VzKSB7
IH0nCitQQVNTIHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJzotd2Via2l0LWFueSguY2xhc3MxLmNs
YXNzMi5jbGFzczMpIHsgfScpIGlzICc6LXdlYmtpdC1hbnkoLmNsYXNzMS5jbGFzczIuY2xhc3Mz
KSB7IH0nCitQQVNTIHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJzotd2Via2l0LWFueSguY2xhc3Mx
OmhvdmVyKSB7IH0nKSBpcyAnOi13ZWJraXQtYW55KC5jbGFzczE6aG92ZXIpIHsgfScKK1BBU1Mg
cGFyc2VUaGVuU2VyaWFsaXplUnVsZSgnOi13ZWJraXQtYW55KGEuY2xhc3MxLmNsYXNzMi5jbGFz
czM6aG92ZXIpIHsgfScpIGlzICc6LXdlYmtpdC1hbnkoYS5jbGFzczEuY2xhc3MyLmNsYXNzMzpo
b3ZlcikgeyB9JwogCiBQQVNTIHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJyo6YWN0aXZlIHsgfScp
IGlzICc6YWN0aXZlIHsgfScKIFBBU1MgcGFyc2VUaGVuU2VyaWFsaXplUnVsZSgnfGEgeyB9Jykg
aXMgJ2EgeyB9JwpAQCAtNzksNiArODcsNyBAQCBQQVNTIHBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUo
JzphZnRlciB7IH0nKSBpcyAnOjphZnRlciB7IH0nCiBQQVNTIHBhcnNlVGhlblNlcmlhbGl6ZVJ1
bGUoJzpiZWZvcmUgeyB9JykgaXMgJzo6YmVmb3JlIHsgfScKIFBBU1MgcGFyc2VUaGVuU2VyaWFs
aXplUnVsZSgnOmZpcnN0LWxldHRlciB7IH0nKSBpcyAnOjpmaXJzdC1sZXR0ZXIgeyB9JwogUEFT
UyBwYXJzZVRoZW5TZXJpYWxpemVSdWxlKCc6Zmlyc3QtbGluZSB7IH0nKSBpcyAnOjpmaXJzdC1s
aW5lIHsgfScKK1BBU1MgcGFyc2VUaGVuU2VyaWFsaXplUnVsZSgnOi13ZWJraXQtYW55KCAgICBh
LmNsYXNzMSAgLCAgCSNpZCxbYXR0cl0gICkgeyB9JykgaXMgJzotd2Via2l0LWFueShhLmNsYXNz
MSwjaWQsW2F0dHJdKSB7IH0nCiAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzLXNlbGVjdG9yLXRleHQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzL2Nzcy1zZWxlY3Rvci10ZXh0Lmh0bWwKaW5kZXggMTM4MzBm
NTBjOTcwZDc2MWM2NWM5NzdjOTE4MmNiZjkwN2IxOWE1OS4uODA5Y2I3N2I2MWE5MmEwMjkyZDMw
N2UyMjZiYzdhNWM3MTYzZmRlZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Nz
LXNlbGVjdG9yLXRleHQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3Mtc2VsZWN0
b3ItdGV4dC5odG1sCkBAIC04Miw2ICs4Miw3IEBAIGRlYnVnKCcnKTsKIAogdGVzdFNlbGVjdG9y
Um91bmRUcmlwKCI6bGFuZyhhKSIpOwogdGVzdFNlbGVjdG9yUm91bmRUcmlwKCI6bm90KGEpIik7
Cit0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoIjotd2Via2l0LWFueShhLGIscCkiKTsKIAogZGVidWco
JycpOwogCkBAIC0xMDksNiArMTEwLDEzIEBAIHRlc3RTZWxlY3RvclJvdW5kVHJpcCgiOjotd2Vi
a2l0LXNsaWRlci10aHVtYiIpOwogZGVidWcoJycpOwogCiB0ZXN0U2VsZWN0b3JSb3VuZFRyaXAo
J2lucHV0Om5vdChbdHlwZT0iZmlsZSJdKTpmb2N1cycpOwordGVzdFNlbGVjdG9yUm91bmRUcmlw
KCc6LXdlYmtpdC1hbnkoW3R5cGU9ImZpbGUiXSknKTsKK3Rlc3RTZWxlY3RvclJvdW5kVHJpcCgn
Oi13ZWJraXQtYW55KDpob3ZlciknKTsKK3Rlc3RTZWxlY3RvclJvdW5kVHJpcCgnaW5wdXQ6LXdl
YmtpdC1hbnkoW3R5cGU9ImZpbGUiXSw6aG92ZXIsOmZvY3VzKTplbmFibGVkJyk7Cit0ZXN0U2Vs
ZWN0b3JSb3VuZFRyaXAoJzotd2Via2l0LWFueShpbnB1dFt0eXBlPSJmaWxlIl0sYTpob3Zlcixi
dXR0b246Zm9jdXMpJyk7Cit0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoJzotd2Via2l0LWFueSguY2xh
c3MxLmNsYXNzMi5jbGFzczMpJyk7Cit0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoJzotd2Via2l0LWFu
eSguY2xhc3MxOmhvdmVyKScpOwordGVzdFNlbGVjdG9yUm91bmRUcmlwKCc6LXdlYmtpdC1hbnko
YS5jbGFzczEuY2xhc3MyLmNsYXNzMzpob3ZlciknKTsKIAogZGVidWcoJycpOwogCkBAIC0xMzEs
NiArMTM5LDcgQEAgc2hvdWxkQmUoInBhcnNlVGhlblNlcmlhbGl6ZVJ1bGUoJzphZnRlciB7IH0n
KSIsICInOjphZnRlciB7IH0nIik7CiBzaG91bGRCZSgicGFyc2VUaGVuU2VyaWFsaXplUnVsZSgn
OmJlZm9yZSB7IH0nKSIsICInOjpiZWZvcmUgeyB9JyIpOwogc2hvdWxkQmUoInBhcnNlVGhlblNl
cmlhbGl6ZVJ1bGUoJzpmaXJzdC1sZXR0ZXIgeyB9JykiLCAiJzo6Zmlyc3QtbGV0dGVyIHsgfSci
KTsKIHNob3VsZEJlKCJwYXJzZVRoZW5TZXJpYWxpemVSdWxlKCc6Zmlyc3QtbGluZSB7IH0nKSIs
ICInOjpmaXJzdC1saW5lIHsgfSciKTsKK3Nob3VsZEJlKCJwYXJzZVRoZW5TZXJpYWxpemVSdWxl
KCc6LXdlYmtpdC1hbnkoICAgIGEuY2xhc3MxICAsICAJI2lkLFthdHRyXSAgKSB7IH0nKSIsIic6
LXdlYmtpdC1hbnkoYS5jbGFzczEsI2lkLFthdHRyXSkgeyB9JyIpOwogCiBkZWJ1ZygnJyk7CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2Nzcy1zZXQtc2VsZWN0b3ItdGV4dC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3Mtc2V0LXNlbGVjdG9yLXRleHQt
ZXhwZWN0ZWQudHh0CmluZGV4IDhiMWM1NjRhNmU2MzBjMWNiMDU0OGFjYWU2MWJhN2MxYjBkMWM1
NDIuLmFlOWYyNTdmOTMxZTExOTk0NTM3MjljMzQ2MDVhNTAzZTRjZWJmYjggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzL2Nzcy1zZXQtc2VsZWN0b3ItdGV4dC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzLXNldC1zZWxlY3Rvci10ZXh0LWV4cGVjdGVk
LnR4dApAQCAtNTYsNiArNTYsNyBAQCBQQVNTIHNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCc6dmlz
aXRlZCcpIGlzICc6dmlzaXRlZCcKIAogUEFTUyBzZXRUaGVuUmVhZFNlbGVjdG9yVGV4dCgnOmxh
bmcoYSknKSBpcyAnOmxhbmcoYSknCiBQQVNTIHNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCc6bm90
KGEpJykgaXMgJzpub3QoYSknCitQQVNTIHNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCc6LXdlYmtp
dC1hbnkoYSxiLHApJykgaXMgJzotd2Via2l0LWFueShhLGIscCknCiAKIFBBU1Mgc2V0VGhlblJl
YWRTZWxlY3RvclRleHQoJzo6YWZ0ZXInKSBpcyAnOjphZnRlcicKIFBBU1Mgc2V0VGhlblJlYWRT
ZWxlY3RvclRleHQoJzo6YmVmb3JlJykgaXMgJzo6YmVmb3JlJwpAQCAtNzUsNiArNzYsMTMgQEAg
UEFTUyBzZXRUaGVuUmVhZFNlbGVjdG9yVGV4dCgnOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRl
Y29yYXRpb24nKSBpcyAnOjotd2Via2kKIFBBU1Mgc2V0VGhlblJlYWRTZWxlY3RvclRleHQoJzo6
LXdlYmtpdC1zbGlkZXItdGh1bWInKSBpcyAnOjotd2Via2l0LXNsaWRlci10aHVtYicKIAogUEFT
UyBzZXRUaGVuUmVhZFNlbGVjdG9yVGV4dCgnaW5wdXQ6bm90KFt0eXBlPSJmaWxlIl0pOmZvY3Vz
JykgaXMgJ2lucHV0Om5vdChbdHlwZT0iZmlsZSJdKTpmb2N1cycKK1BBU1Mgc2V0VGhlblJlYWRT
ZWxlY3RvclRleHQoJzotd2Via2l0LWFueShbdHlwZT0iZmlsZSJdKScpIGlzICc6LXdlYmtpdC1h
bnkoW3R5cGU9ImZpbGUiXSknCitQQVNTIHNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCc6LXdlYmtp
dC1hbnkoOmhvdmVyKScpIGlzICc6LXdlYmtpdC1hbnkoOmhvdmVyKScKK1BBU1Mgc2V0VGhlblJl
YWRTZWxlY3RvclRleHQoJ2lucHV0Oi13ZWJraXQtYW55KFt0eXBlPSJmaWxlIl0sOmhvdmVyLDpm
b2N1cyk6ZW5hYmxlZCcpIGlzICdpbnB1dDotd2Via2l0LWFueShbdHlwZT0iZmlsZSJdLDpob3Zl
ciw6Zm9jdXMpOmVuYWJsZWQnCitQQVNTIHNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCc6LXdlYmtp
dC1hbnkoaW5wdXRbdHlwZT0iZmlsZSJdLGE6aG92ZXIsYnV0dG9uOmZvY3VzKScpIGlzICc6LXdl
YmtpdC1hbnkoaW5wdXRbdHlwZT0iZmlsZSJdLGE6aG92ZXIsYnV0dG9uOmZvY3VzKScKK1BBU1Mg
c2V0VGhlblJlYWRTZWxlY3RvclRleHQoJzotd2Via2l0LWFueSguY2xhc3MxLmNsYXNzMi5jbGFz
czMpJykgaXMgJzotd2Via2l0LWFueSguY2xhc3MxLmNsYXNzMi5jbGFzczMpJworUEFTUyBzZXRU
aGVuUmVhZFNlbGVjdG9yVGV4dCgnOi13ZWJraXQtYW55KC5jbGFzczE6aG92ZXIpJykgaXMgJzot
d2Via2l0LWFueSguY2xhc3MxOmhvdmVyKScKK1BBU1Mgc2V0VGhlblJlYWRTZWxlY3RvclRleHQo
Jzotd2Via2l0LWFueShhLmNsYXNzMS5jbGFzczIuY2xhc3MzOmhvdmVyKScpIGlzICc6LXdlYmtp
dC1hbnkoYS5jbGFzczEuY2xhc3MyLmNsYXNzMzpob3ZlciknCiAKIFBBU1Mgc2V0VGhlblJlYWRT
ZWxlY3RvclRleHQoJyo6YWN0aXZlJykgaXMgJzphY3RpdmUnCiBQQVNTIHNldFRoZW5SZWFkU2Vs
ZWN0b3JUZXh0KCd8YScpIGlzICdhJwpAQCAtODksNiArOTcsNyBAQCBQQVNTIHNldFRoZW5SZWFk
U2VsZWN0b3JUZXh0KCc6YWZ0ZXInKSBpcyAnOjphZnRlcicKIFBBU1Mgc2V0VGhlblJlYWRTZWxl
Y3RvclRleHQoJzpiZWZvcmUnKSBpcyAnOjpiZWZvcmUnCiBQQVNTIHNldFRoZW5SZWFkU2VsZWN0
b3JUZXh0KCc6Zmlyc3QtbGV0dGVyJykgaXMgJzo6Zmlyc3QtbGV0dGVyJwogUEFTUyBzZXRUaGVu
UmVhZFNlbGVjdG9yVGV4dCgnOmZpcnN0LWxpbmUnKSBpcyAnOjpmaXJzdC1saW5lJworUEFTUyBz
ZXRUaGVuUmVhZFNlbGVjdG9yVGV4dCgnOi13ZWJraXQtYW55KCAgICBhLmNsYXNzMSAgLCAgCSNp
ZCxbYXR0cl0gICknKSBpcyAnOi13ZWJraXQtYW55KGEuY2xhc3MxLCNpZCxbYXR0cl0pJwogCiBQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL2Nzcy1zZXQtc2VsZWN0b3ItdGV4dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvY3NzLXNldC1zZWxlY3Rvci10ZXh0Lmh0bWwKaW5kZXggYzk1NGY4Mzk4ZDVmODRkYWM1NTc2
ODRiYjg2N2E0OWFmZTMzZjAwNC4uYzZhYjdjOGY5MGQwNDEzMTNjN2Q5NDYyNTNkYjc3YjdmZDI2
YWVkZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzLXNldC1zZWxlY3Rvci10
ZXh0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzLXNldC1zZWxlY3Rvci10ZXh0
Lmh0bWwKQEAgLTk5LDYgKzk5LDcgQEAgZGVidWcoJycpOwogCiB0ZXN0U2VsZWN0b3JSb3VuZFRy
aXAoIjpsYW5nKGEpIik7CiB0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoIjpub3QoYSkiKTsKK3Rlc3RT
ZWxlY3RvclJvdW5kVHJpcCgiOi13ZWJraXQtYW55KGEsYixwKSIpOwogCiBkZWJ1ZygnJyk7CiAK
QEAgLTEyNiw2ICsxMjcsMTMgQEAgdGVzdFNlbGVjdG9yUm91bmRUcmlwKCI6Oi13ZWJraXQtc2xp
ZGVyLXRodW1iIik7CiBkZWJ1ZygnJyk7CiAKIHRlc3RTZWxlY3RvclJvdW5kVHJpcCgnaW5wdXQ6
bm90KFt0eXBlPSJmaWxlIl0pOmZvY3VzJyk7Cit0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoJzotd2Vi
a2l0LWFueShbdHlwZT0iZmlsZSJdKScpOwordGVzdFNlbGVjdG9yUm91bmRUcmlwKCc6LXdlYmtp
dC1hbnkoOmhvdmVyKScpOwordGVzdFNlbGVjdG9yUm91bmRUcmlwKCdpbnB1dDotd2Via2l0LWFu
eShbdHlwZT0iZmlsZSJdLDpob3Zlciw6Zm9jdXMpOmVuYWJsZWQnKTsKK3Rlc3RTZWxlY3RvclJv
dW5kVHJpcCgnOi13ZWJraXQtYW55KGlucHV0W3R5cGU9ImZpbGUiXSxhOmhvdmVyLGJ1dHRvbjpm
b2N1cyknKTsKK3Rlc3RTZWxlY3RvclJvdW5kVHJpcCgnOi13ZWJraXQtYW55KC5jbGFzczEuY2xh
c3MyLmNsYXNzMyknKTsKK3Rlc3RTZWxlY3RvclJvdW5kVHJpcCgnOi13ZWJraXQtYW55KC5jbGFz
czE6aG92ZXIpJyk7Cit0ZXN0U2VsZWN0b3JSb3VuZFRyaXAoJzotd2Via2l0LWFueShhLmNsYXNz
MS5jbGFzczIuY2xhc3MzOmhvdmVyKScpOwogCiBkZWJ1ZygnJyk7CiAKQEAgLTE0OCw2ICsxNTYs
NyBAQCBzaG91bGRCZSgic2V0VGhlblJlYWRTZWxlY3RvclRleHQoJzphZnRlcicpIiwgIic6OmFm
dGVyJyIpOwogc2hvdWxkQmUoInNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCc6YmVmb3JlJykiLCAi
Jzo6YmVmb3JlJyIpOwogc2hvdWxkQmUoInNldFRoZW5SZWFkU2VsZWN0b3JUZXh0KCc6Zmlyc3Qt
bGV0dGVyJykiLCAiJzo6Zmlyc3QtbGV0dGVyJyIpOwogc2hvdWxkQmUoInNldFRoZW5SZWFkU2Vs
ZWN0b3JUZXh0KCc6Zmlyc3QtbGluZScpIiwgIic6OmZpcnN0LWxpbmUnIik7CitzaG91bGRCZSgi
c2V0VGhlblJlYWRTZWxlY3RvclRleHQoJzotd2Via2l0LWFueSggICAgYS5jbGFzczEgICwgIAkj
aWQsW2F0dHJdICApJykiLCInOi13ZWJraXQtYW55KGEuY2xhc3MxLCNpZCxbYXR0cl0pJyIpOwog
CiBkZWJ1ZygnJyk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1h
bnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLWFueS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVlMTUzYjA5ZDdiODZhNmZmNzI5MWJiMzFlNDA2OTQyZDBjODRh
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1hbnktZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsODcgQEAKK1RoaXMgcGFnZSB0ZXN0cyA6LXdlYmtpdC1hbnku
IFRoaXMgd2luZG93IG5lZWRzIHRvIGJlIGZvY3VzZWQgZm9yIHRoZSA6Zm9jdXMgdGVzdHMgdG8g
cGFzcy4KK2gxCisKK2gxCisKK2RpdgorZm9vCitiIGkKK3AKKworYSBzcGFuCitsaQordSBzCisK
K2RpdiBzcGFuCitkaXZ+cSBxK3EgcT5zcGFuCisKK2gxCitQQVNTIGRvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFj
a2dyb3VuZC1jb2xvcicpIGlzICdyZ2IoMCwgMCwgMjU1KScKKworI2RpdjEKK1BBU1MgZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0
eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgaXMgJ3JnYigwLCAwLCAyNTUpJworCitFbGVtZW50
OiBESVYKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50
LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgaXMgJ3JnYmEoMCwg
MCwgMCwgMCknCisKK2IKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZShlbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgaXMg
J3JnYigwLCAwLCAyNTUpJworCitpCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUoZWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xv
cicpIGlzICdyZ2IoMCwgMCwgMjU1KScKKworcAorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91
bmQtY29sb3InKSBpcyAncmdiKDAsIDAsIDI1NSknCisKKyNzcGFuMQorUEFTUyBkb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFs
dWUoJ2JhY2tncm91bmQtY29sb3InKSBpcyAncmdiYSgwLCAwLCAwLCAwKScKKworc3Bhbjpmb2N1
cworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSBpcyAncmdiKDAsIDAsIDI1
NSknCisKK2EKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGVt
ZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgaXMgJ3JnYigw
LCAwLCAyNTUpJworCithOmZvY3VzCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUoZWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xv
cicpIGlzICdyZ2IoMCwgMTI4LCAwKScKKworLmZvbworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tn
cm91bmQtY29sb3InKSBpcyAncmdiKDAsIDAsIDI1NSknCisKKyNiYXIKK1BBU1MgZG9jdW1lbnQu
ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgaXMgJ3JnYigwLCAwLCAyNTUpJworCitoMS5oMWNsYXNz
CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgbnVs
bCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAw
KScKKworUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjY29udGFpbmVyLWRpdiA6LXdl
YmtpdC1hbnkoW2hyZWZdLGlucHV0W3R5cGVdLGlucHV0W25hbWVdKScpLmxlbmd0aCBpcyAyCitQ
QVNTIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNjb250YWluZXItZGl2IDotd2Via2l0LWFu
eShkaXYsYSk6LXdlYmtpdC1hbnkoW3R5cGVdLFtocmVmXSxbbmFtZV0pJykubGVuZ3RoIGlzIDIK
K1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI2NvbnRhaW5lci1kaXYgOi13ZWJraXQt
YW55KDpsaW5rLCA6bm90KGEpKScpLmxlbmd0aCBpcyAzCisKKyNjb250YWluZXItZGl2IGlucHV0
CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgbnVs
bCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAw
KScKKworI2NvbnRhaW5lci1kaXYgYVtocmVmXQorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91
bmQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCisKKyNjb250YWluZXItZGl2IGRpdgorUEFT
UyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsIG51bGwpLmdl
dFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCisK
KyNjb250YWluZXItZGl2IGFbbmFtZV0KK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShlbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNv
bG9yJykgaXMgJ3JnYmEoMCwgMCwgMCwgMCknCisKK3MKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNr
Z3JvdW5kLWNvbG9yJykgaXMgJ3JnYmEoMCwgMCwgMCwgMCknCisKK2RpdiBzcGFuCitQQVNTIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIGlzICdyZ2IoMCwgMCwgMjU1KScKKworZGl2
IH4gcQorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQs
IG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSBpcyAncmdiKDAsIDAs
IDI1NSknCisKK3ErcQorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KGVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSBpcyAn
cmdiKDAsIDAsIDI1NSknCisKK3E+c3BhbgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKGVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQt
Y29sb3InKSBpcyAncmdiKDAsIDAsIDI1NSknCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3BzZXVkby1hbnkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1hbnku
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hZGE5Yjc3ZjEwYzliYzc5ZWU2NDY1MDFlZDgyMjZjNzdiNWM2YWMz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLWFueS5odG1s
CkBAIC0wLDAgKzEsMTU5IEBACis8IURPQ1RZUEUgSFRNTD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorOi13
ZWJraXQtYW55KGgxKSwKKzotd2Via2l0LWFueSggI2RpdjEsIGIgKSwKKzotd2Via2l0LWFueSgu
Zm9vLCAjYmFyKSwKKzotd2Via2l0LWFueShpLHAsOmxpbmssc3Bhbjpmb2N1cykgeworICAgIGJh
Y2tncm91bmQtY29sb3I6IGJsdWU7Cit9CisKKzotd2Via2l0LWFueSg6bGluazpmb2N1cyksCisj
Y29udGFpbmVyLWRpdiA6LXdlYmtpdC1hbnkoOmxpbmssIDpub3QoYSkpLAoraDE6LXdlYmtpdC1h
bnkoLmgxY2xhc3MsICNiYXIpIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKK30KKwor
LyogT25seSBzaW1wbGUgc2VsZWN0b3JzIHNob3VsZCB3b3JrLiAqLworOi13ZWJraXQtYW55KCkg
eworICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKK30KKworOi13ZWJraXQtYW55KHMsOm5vbmV4
aXN0ZW50cHNldWRvKSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworfQorCitkaXZ+cSB7
CisgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKK30KKzotd2Via2l0LWFueShkaXYgfiBxKSB7
CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworfQorOi13ZWJraXQtYW55KGRpdn5xKSB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworfQorCitxK3EgeworICAgIGJhY2tncm91bmQtY29s
b3I6IGJsdWU7Cit9Cis6LXdlYmtpdC1hbnkocStxKSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
cmVkOworfQorCitxPnNwYW4geworICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7Cit9Cis6LXdl
YmtpdC1hbnkocT5zcGFuKSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworfQorCitkaXYg
c3BhbiB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKK30KKzotd2Via2l0LWFueShkaXYg
c3BhbikgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKK30KKzotd2Via2l0LWFueSggZGl2
IHNwYW4gKSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworfQorPC9zdHlsZT4KK1RoaXMg
cGFnZSB0ZXN0cyA6LXdlYmtpdC1hbnkuIFRoaXMgd2luZG93IG5lZWRzIHRvIGJlIGZvY3VzZWQg
Zm9yIHRoZSA6Zm9jdXMgdGVzdHMgdG8gcGFzcy48YnI+Cis8aDE+aDE8L2gxPgorPGgxIGNsYXNz
PSJoMWNsYXNzIj5oMTwvaDE+Cis8ZGl2IGlkPSJkaXYxIj5kaXY8L2Rpdj4KKzxkaXY+Zm9vPC9k
aXY+Cis8Yj5iPC9iPgorPGk+aTwvaT4KKzxwPnA8L3A+Cis8YSBocmVmPSJodHRwOi8vd2Via2l0
Lm9yZyI+YTwvYT4KKzxzcGFuIGlkPSJzcGFuMSI+c3BhbjxzcGFuPgorPGxpIGNsYXNzPSJmb28i
PmxpPC9saT4KKzx1IGlkPSJiYXIiPnU8L3U+Cis8cz5zPC9zPgorPGRpdiBpZD0iY29udGFpbmVy
LWRpdiI+PGlucHV0IHR5cGU9J3RleHQnPjxhIGhyZWY9J2h0dHA6Ly93d3cuZXhhbXBsZS5jb20v
Jz48L2E+PGRpdj48L2Rpdj48YSBuYW1lPSdmb28nPjwvZGl2PgorPGRpdj48c3Bhbj5kaXYgc3Bh
bjwvc3Bhbj48L2Rpdj4KKzxxPmRpdn5xPC9xPgorPHE+cStxPC9xPgorPHE+PHNwYW4+cT5zcGFu
PC9zcGFuPjwvcT4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorCis8c2NyaXB0PgoraWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisKK2Z1bmN0aW9uIGFzc2VydENvbG9yKHNlbGVjdG9yT3JFbGVtZW50LCByYmdD
b2xvcikKK3sKKyAgICBkZWJ1ZygiIik7CisKKyAgICBpZiAodHlwZW9mIHNlbGVjdG9yT3JFbGVt
ZW50ID09ICJzdHJpbmciKSB7CisgICAgICAgIGRlYnVnKHNlbGVjdG9yT3JFbGVtZW50KTsKKyAg
ICAgICAgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3JPckVsZW1lbnQp
OworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKCJFbGVtZW50OiAiICsgZWxlbWVudC5ub2Rl
TmFtZSk7CisgICAgICAgIGVsZW1lbnQgPSBzZWxlY3Rvck9yRWxlbWVudDsKKyAgICB9CisKKyAg
ICBzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50
LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykiLCByYmdDb2xvcik7
Cit9CisKK2Z1bmN0aW9uIGFzc2VydEJsdWUoc2VsZWN0b3JPckVsZW1lbnQpCit7CisgICAgYXNz
ZXJ0Q29sb3Ioc2VsZWN0b3JPckVsZW1lbnQsICIncmdiKDAsIDAsIDI1NSknIikKK30KKworZnVu
Y3Rpb24gYXNzZXJ0V2hpdGUoc2VsZWN0b3JPckVsZW1lbnQpCit7CisgICAgYXNzZXJ0Q29sb3Io
c2VsZWN0b3JPckVsZW1lbnQsICIncmdiYSgwLCAwLCAwLCAwKSciKQorfQorCitmdW5jdGlvbiBh
c3NlcnRHcmVlbihzZWxlY3Rvck9yRWxlbWVudCkKK3sKKyAgICBhc3NlcnRDb2xvcihzZWxlY3Rv
ck9yRWxlbWVudCwgIidyZ2IoMCwgMTI4LCAwKSciKQorfQorCitmdW5jdGlvbiBmb2N1cyhzZWxl
Y3RvcikKK3sKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0
b3IpOworICAgIGVsZW1lbnQudGFiSW5kZXggPSAtMTsKKyAgICBlbGVtZW50LmZvY3VzKCk7Cit9
CisKK2Fzc2VydEJsdWUoImgxIik7Cithc3NlcnRCbHVlKCIjZGl2MSIpOworCisvLyBFbnN1cmUg
dGhlIGRpdiB3aXRoIElEIGFmdGVyIHRoZSBmaXJzdCBkaXYgZG9lcyBub3Qgc2hhcmUgYSBSZW5k
ZXJTdHlsZSB3aXRoIHRoZSBmaXJzdCBkaXYuCithc3NlcnRXaGl0ZShkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCJkaXYiKVsxXSk7CisKK2Fzc2VydEJsdWUoImIiKTsKK2Fzc2VydEJsdWUoImki
KTsKK2Fzc2VydEJsdWUoInAiKTsKKworYXNzZXJ0V2hpdGUoIiNzcGFuMSIpOworZm9jdXMoIiNz
cGFuMSIpOworYXNzZXJ0Qmx1ZSgic3Bhbjpmb2N1cyIpOworCithc3NlcnRCbHVlKCJhIik7Citm
b2N1cygiYSIpOworYXNzZXJ0R3JlZW4oImE6Zm9jdXMiKTsKKworYXNzZXJ0Qmx1ZSgiLmZvbyIp
OworYXNzZXJ0Qmx1ZSgiI2JhciIpOworCithc3NlcnRHcmVlbigiaDEuaDFjbGFzcyIpOworCitk
ZWJ1ZygiIik7CitzaG91bGRCZSgiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI2NvbnRhaW5l
ci1kaXYgOi13ZWJraXQtYW55KFtocmVmXSxpbnB1dFt0eXBlXSxpbnB1dFtuYW1lXSknKS5sZW5n
dGgiLCAiMiIpOworc2hvdWxkQmUoImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNjb250YWlu
ZXItZGl2IDotd2Via2l0LWFueShkaXYsYSk6LXdlYmtpdC1hbnkoW3R5cGVdLFtocmVmXSxbbmFt
ZV0pJykubGVuZ3RoIiwgIjIiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCcjY29udGFpbmVyLWRpdiA6LXdlYmtpdC1hbnkoOmxpbmssIDpub3QoYSkpJykubGVuZ3RoIiwg
IjMiKTsKK2Fzc2VydEdyZWVuKCIjY29udGFpbmVyLWRpdiBpbnB1dCIpOworYXNzZXJ0R3JlZW4o
IiNjb250YWluZXItZGl2IGFbaHJlZl0iKTsKK2Fzc2VydEdyZWVuKCIjY29udGFpbmVyLWRpdiBk
aXYiKTsKK2Fzc2VydFdoaXRlKCIjY29udGFpbmVyLWRpdiBhW25hbWVdIik7CisKK2Fzc2VydFdo
aXRlKCJzIik7Cithc3NlcnRCbHVlKCJkaXYgc3BhbiIpOworYXNzZXJ0Qmx1ZSgiZGl2IH4gcSIp
OworYXNzZXJ0Qmx1ZSgicStxIik7Cithc3NlcnRCbHVlKCJxPnNwYW4iKTsKKzwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vU2VsZWN0b3JBUEkvbm90LXN1cHBvcnRl
ZC1uYW1lc3BhY2UtaW4tc2VsZWN0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vU2VsZWN0b3JBUEkvbm90LXN1cHBvcnRlZC1uYW1lc3BhY2UtaW4tc2VsZWN0b3ItZXhwZWN0
ZWQudHh0CmluZGV4IDcwYTlmZjNiOTZkOWIzMTVmOGFlNDBhYmZhMjRiYmY0YTE5NjliOTAuLjU2
ZTg0YTJlMmI3MjQxZWQyYWJmNmY5NzY5ODQ5ZTZiYTVhNDJjNDYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL1NlbGVjdG9yQVBJL25vdC1zdXBwb3J0ZWQtbmFtZXNwYWNlLWluLXNl
bGVjdG9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9TZWxlY3RvckFQ
SS9ub3Qtc3VwcG9ydGVkLW5hbWVzcGFjZS1pbi1zZWxlY3Rvci1leHBlY3RlZC50eHQKQEAgLTI3
LDYgKzI3LDcgQEAgUEFTUzogZG9jdW1lbnQuYm9keS53ZWJraXRNYXRjaGVzU2VsZWN0b3IoJ1sq
fG5hbWU9dmFsdWVdJykgZGlkIG5vdCB0aHJvdwogUEFTUzogZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignW3xuYW1lPXZhbHVlXScpIGRpZCBub3QgdGhyb3cKIFBBU1M6IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3JBbGwoJ1t8bmFtZT12YWx1ZV0nKSBkaWQgbm90IHRocm93CiBQQVNTOiBkb2N1bWVudC5i
b2R5LndlYmtpdE1hdGNoZXNTZWxlY3RvcignW3xuYW1lPXZhbHVlXScpIGRpZCBub3QgdGhyb3cK
K1BBU1M6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJzotd2Via2l0LWFueShiYmJ8cHJlKScpIHRo
cm93czogRXJyb3I6IE5BTUVTUEFDRV9FUlI6IERPTSBFeGNlcHRpb24gMTQKIFBBU1M6IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdiBbYmJifG5hbWU9dmFsdWVdJykgdGhyb3dzOiBFcnJvcjog
TkFNRVNQQUNFX0VSUjogRE9NIEV4Y2VwdGlvbiAxNAogUEFTUzogZG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgnZGl2IFtiYmJ8bmFtZT12YWx1ZV0nKSB0aHJvd3M6IEVycm9yOiBOQU1FU1BBQ0Vf
RVJSOiBET00gRXhjZXB0aW9uIDE0CiBQQVNTOiBkb2N1bWVudC5ib2R5LndlYmtpdE1hdGNoZXNT
ZWxlY3RvcignZGl2IFtiYmJ8bmFtZT12YWx1ZV0nKSB0aHJvd3M6IEVycm9yOiBOQU1FU1BBQ0Vf
RVJSOiBET00gRXhjZXB0aW9uIDE0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9T
ZWxlY3RvckFQSS9ub3Qtc3VwcG9ydGVkLW5hbWVzcGFjZS1pbi1zZWxlY3Rvci5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vU2VsZWN0b3JBUEkvbm90LXN1cHBvcnRlZC1uYW1lc3BhY2UtaW4t
c2VsZWN0b3IuaHRtbAppbmRleCBkYzUzOTM1NGRjNTBmNjcxNTU0M2MyMjY3MDVlMzBjOWQyNjFm
NjcwLi5iOWNmNWNhODM3NjUwYjdlYzk3YTg0NGM1Y2YyNzY0NTQwNzAzYjBhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9TZWxlY3RvckFQSS9ub3Qtc3VwcG9ydGVkLW5hbWVzcGFj
ZS1pbi1zZWxlY3Rvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1NlbGVjdG9yQVBJ
L25vdC1zdXBwb3J0ZWQtbmFtZXNwYWNlLWluLXNlbGVjdG9yLmh0bWwKQEAgLTYxLDYgKzYxLDgg
QEAKICAgICAgICAgc2hvdWxkTm90VGhyb3coImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1t8
bmFtZT12YWx1ZV0nKSIpOwogICAgICAgICBzaG91bGROb3RUaHJvdygiZG9jdW1lbnQuYm9keS53
ZWJraXRNYXRjaGVzU2VsZWN0b3IoJ1t8bmFtZT12YWx1ZV0nKSIpOwogCisgICAgICAgIHNob3Vs
ZFRocm93KCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCc6LXdlYmtpdC1hbnkoYmJifHByZSknKSIp
OworCiAgICAgICAgIHNob3VsZFRocm93KCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXYgW2Ji
YnxuYW1lPXZhbHVlXScpIik7CiAgICAgICAgIHNob3VsZFRocm93KCJkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCdkaXYgW2JiYnxuYW1lPXZhbHVlXScpIik7CiAgICAgICAgIHNob3VsZFRocm93
KCJkb2N1bWVudC5ib2R5LndlYmtpdE1hdGNoZXNTZWxlY3RvcignZGl2IFtiYmJ8bmFtZT12YWx1
ZV0nKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vU2VsZWN0b3JBUEkvdW5r
bm93bi1wc2V1ZG8tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vU2VsZWN0b3JB
UEkvdW5rbm93bi1wc2V1ZG8tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5MDgwOWE4YWE1OGE5
NWNkY2E3ODg1ZDlmNGQzNGUxMGVmN2U2ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9TZWxlY3RvckFQSS91bmtub3duLXBzZXVkby1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzIEBACitQQVNTOiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKDp1bmtub3ducHNldWRvKSB0
aHJvd3M6IFN5bnRheEVycm9yOiBQYXJzZSBlcnJvcgorUEFTUzogZG9jdW1lbnQucXVlcnlTZWxl
Y3Rvcig6LXdlYmtpdC1hbnkoOnVua25vd25wc2V1ZG8pKSB0aHJvd3M6IFN5bnRheEVycm9yOiBQ
YXJzZSBlcnJvcgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9TZWxlY3RvckFQ
SS91bmtub3duLXBzZXVkby5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vU2VsZWN0b3JBUEkv
dW5rbm93bi1wc2V1ZG8uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGRiOGFhNDBjODNmMzUwZTg0ZjBjOGVh
ZWIyZjI3NjYwZmZkZTNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
U2VsZWN0b3JBUEkvdW5rbm93bi1wc2V1ZG8uaHRtbApAQCAtMCwwICsxLDIzIEBACis8cHJlIGlk
PSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24g
bG9nKG1zZykKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsKK30KKworZnVuY3Rp
b24gc2hvdWxkVGhyb3coX2EpCit7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChfYSk7CisgICAg
ICAgIGxvZygiRkFJTDogIiArIF9hICsgIiBkaWQgbm90IHRocm93Iik7CisgICAgfSBjYXRjaChl
eCkgeworICAgICAgICBsb2coIlBBU1M6ICIgKyBfYSArICIgdGhyb3dzOiAiICsgZXgpOworICAg
IH0KK30KKworc2hvdWxkVGhyb3coImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoOnVua25vd25wc2V1
ZG8pIik7CitzaG91bGRUaHJvdygiZG9jdW1lbnQucXVlcnlTZWxlY3Rvcig6LXdlYmtpdC1hbnko
OnVua25vd25wc2V1ZG8pKSIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTkzZDE0NjcxNDBl
MWI1NGViMmI5ODVkNGNmNDA4ZWMyMjAwZTQxMS4uNGZlNDNjYTdhNjNkNTQwMGZkNzA5NWJjM2Vj
NWFkODUxMzVmNzQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDExLTAzLTE3ICBP
amFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgd2Via2l0IHNob3VsZCBpbXBsZW1lbnQgLW1vei1hbnkg
c2VsZWN0b3IgKGFzIC13ZWJraXQtYW55IG9idmlvdXNseSkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4MDk1CisKKyAgICAgICAgRm9yIG5vdywgbWF0
Y2ggdGhlIE1vemlsbGEgaW1wbGVtZW50YXRpb24gd2l0aCByZXNwZWN0IHRvIHNwZWNpZmljaXR5
CisgICAgICAgIGFuZCBvbmx5IGFsbG93aW5nIHNpbXBsZSBzZWxlY3RvcnMuIEJvdGggb2YgdGhl
c2UgYXJlIGxpa2VseSB0byBjaGFuZ2UKKyAgICAgICAgcGVuZGluZyBkaXNjdXNzaW9uIG9uIHd3
dy1zdHlsZUAuIAorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nzcy9wc2V1ZG8tYW55Lmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvZG9tL1NlbGVjdG9yQVBJL3Vua25vd24tcHNldWRvLmh0bWwKKwor
ICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgIENyZWF0ZSBzaW1wbGVfc2VsZWN0
b3JfbGlzdC4gVGhpcyBpcyBleGFjdGx5IGxpa2Ugc2VsZWN0b3JfbGlzdAorICAgICAgICBleGNl
cHQgaXQgb25seSBhbGxvd3Mgc2ltcGxlIHNlbGVjdG9ycyBhbmQgY3JlYXRlcyBhIG5ldyB2ZWN0
b3IKKyAgICAgICAgaW5zdGVhZCBvZiBhIHJldXNhYmxlIG9uZSBzaW5jZSB0aGVyZSBjYW4gYmUg
bXVsdGlwbGUgaW4gb25lIHJ1bGUuCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6On5DU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpsZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVGbG9h
dGluZ1NlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6c2lua0Zs
b2F0aW5nU2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAg
ICAgKiBjc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clNlbGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2Vy
VmFsdWVzLmg6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NlbGVjdG9yOjpzcGVjaWZpY2l0eUZvck9uZVNlbGVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1NlbGVjdG9yOjpwc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpuYW1lVG9Q
c2V1ZG9UeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpleHRyYWN0UHNl
dWRvVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZXRTZWxlY3Rvckxpc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OlJhcmVEYXRhOjpSYXJlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTZWxlY3Rvcjo6UmFyZURhdGE6On5SYXJlRGF0YSk6CisgICAgICAgIFRoZXNl
IG5lZWQgdG8gYmUgbW92ZWQgaW50byB0aGUgY3BwIGZpbGUgc28gdGhhdCB3ZSBjYW4KKyAgICAg
ICAgaGF2ZSBhbiBPd25QdHI8Q1NTU2VsZWN0b3JMaXN0PiBpbiBDU1NTZWxlY3Rvcjo6UmFyZURh
dGEuCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
ZWxlY3Rvcjo6c2VsZWN0b3JMaXN0KToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmZvckVhY2hUYWdTZWxlY3Rvcik6CisgICAgICAgICogY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rv
cjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3Rvcik6CisgICAgICAgICogY3NzL3Rva2VuaXplci5m
bGV4OgorCiAyMDExLTAzLTE3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhbW1hci55IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRl
eCA4NjU4Njc0MzM5ZjRhMDk1ZTIwZGMyMjhhY2FlNWQ3NmY2MDQ4MmY3Li44MmYwYWVlZmFiZTk0
YjI2NThkNzFjZjMyZTM2OTJlYTM3ZGZlNTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAg
LTE4OSw2ICsxODksNyBAQCBzdGF0aWMgaW50IGNzc3l5bGV4KFlZU1RZUEUqIHl5bHZhbCwgdm9p
ZCogcGFyc2VyKQogCiAldG9rZW4gPHN0cmluZz4gVVJJCiAldG9rZW4gPHN0cmluZz4gRlVOQ1RJ
T04KKyV0b2tlbiA8c3RyaW5nPiBBTllGVU5DVElPTgogJXRva2VuIDxzdHJpbmc+IE5PVEZVTkNU
SU9OCiAKICV0b2tlbiA8c3RyaW5nPiBVTklDT0RFUkFOR0UKQEAgLTI0Nyw2ICsyNDgsNyBAQCBz
dGF0aWMgaW50IGNzc3l5bGV4KFlZU1RZUEUqIHl5bHZhbCwgdm9pZCogcGFyc2VyKQogJXR5cGUg
PHNlbGVjdG9yPiBzaW1wbGVfc2VsZWN0b3IKICV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3IKICV0
eXBlIDxzZWxlY3Rvckxpc3Q+IHNlbGVjdG9yX2xpc3QKKyV0eXBlIDxzZWxlY3Rvckxpc3Q+IHNp
bXBsZV9zZWxlY3Rvcl9saXN0CiAldHlwZSA8c2VsZWN0b3I+IHNlbGVjdG9yX3dpdGhfdHJhaWxp
bmdfd2hpdGVzcGFjZQogJXR5cGUgPHNlbGVjdG9yPiBjbGFzcwogJXR5cGUgPHNlbGVjdG9yPiBh
dHRyaWIKQEAgLTkyMSw2ICs5MjMsMzEgQEAgc2ltcGxlX3NlbGVjdG9yOgogICAgIH0KICAgOwog
CitzaW1wbGVfc2VsZWN0b3JfbGlzdDoKKyAgICBzaW1wbGVfc2VsZWN0b3IgJXByZWMgVU5JTVBP
UlRBTlRfVE9LIHsKKyAgICAgICAgaWYgKCQxKSB7CisgICAgICAgICAgICBDU1NQYXJzZXIqIHAg
PSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOworICAgICAgICAgICAgJCQgPSBwLT5j
cmVhdGVGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2hyaW5rKDAp
OworICAgICAgICAgICAgJCQtPmFwcGVuZChwLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOwor
ICAgICAgICAgICAgcC0+dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgJCQgPSAwCisgICAgfQorICAgIHwgc2ltcGxlX3NlbGVj
dG9yX2xpc3QgbWF5YmVfc3BhY2UgJywnIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3RvciAlcHJl
YyBVTklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDEgJiYgJDUpIHsKKyAgICAgICAgICAg
IENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAg
ICAgICAkJCA9ICQxOworICAgICAgICAgICAgJCQtPmFwcGVuZChwLT5zaW5rRmxvYXRpbmdTZWxl
Y3RvcigkNSkpOworICAgICAgICAgICAgcC0+dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0
aW9uKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICB8
IHNpbXBsZV9zZWxlY3Rvcl9saXN0IGVycm9yIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAg
OworCiBlbGVtZW50X25hbWU6CiAgICAgSURFTlQgewogICAgICAgICBDU1NQYXJzZXJTdHJpbmcm
IHN0ciA9ICQxOwpAQCAtMTEwMiw2ICsxMTI5LDI1IEBAIHBzZXVkbzoKICAgICAgICAgLy8gRklY
TUU6IFRoaXMgY2FsbCBpcyBuZWVkZWQgdG8gZm9yY2Ugc2VsZWN0b3IgdG8gY29tcHV0ZSB0aGUg
cHNldWRvVHlwZSBlYXJseSBlbm91Z2guCiAgICAgICAgICQkLT5wc2V1ZG9UeXBlKCk7CiAgICAg
fQorICAgIC8vIHVzZSBieSA6LXdlYmtpdC1hbnkuCisgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBz
dXBwb3J0IGdlbmVyaWMgc2VsZWN0b3JzIGhlcmUgb3IganVzdCBzaW1wbGVfc2VsZWN0b3JzPwor
ICAgIC8vIFVzZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBmb3Igbm93IHRvIG1hdGNoIC1tb3otYW55
LgorICAgIC8vIFNlZSBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5
bGUvMjAxMFNlcC8wNTY2Lmh0bWwgZm9yIHNvbWUKKyAgICAvLyByZWxhdGVkIGRpc2N1c3Npb24g
d2l0aCByZXNwZWN0IHRvIDpub3QuCisgICAgfCAnOicgQU5ZRlVOQ1RJT04gbWF5YmVfc3BhY2Ug
c2ltcGxlX3NlbGVjdG9yX2xpc3QgbWF5YmVfc3BhY2UgJyknIHsKKyAgICAgICAgaWYgKCQ0KSB7
CisgICAgICAgICAgICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJz
ZXIpOworICAgICAgICAgICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAg
ICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKKyAgICAgICAg
ICAgICQkLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpwLT5zaW5rRmxvYXRpbmdTZWxlY3RvclZlY3Rv
cigkNCkpOworICAgICAgICAgICAgJDIubG93ZXIoKTsKKyAgICAgICAgICAgICQkLT5zZXRWYWx1
ZSgkMik7CisgICAgICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBz
ZXVkb1R5cGUoKTsKKyAgICAgICAgICAgIGlmICh0eXBlICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9B
bnkpCisgICAgICAgICAgICAgICAgJCQgPSAwOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICQkID0gMDsKKyAgICB9CiAgICAgLy8gdXNlZCBieSA6bnRoLSooYXgrYikKICAgICB8ICc6JyBG
VU5DVElPTiBtYXliZV9zcGFjZSBOVEggbWF5YmVfc3BhY2UgJyknIHsKICAgICAgICAgQ1NTUGFy
c2VyICpwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAKaW5kZXggNTM3ZmNhYzU0YmM1MDk2ZGI0ZTZmYWFmZGNhNTk3ZjU3MDhiMmJkYi4u
OWVkMTA1NzMwM2E4ODUwYjRmNDkxNTQyZWJkMDgwZDMwMjY4MjFlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKQEAgLTE3Myw2ICsxNzMsNyBAQCBDU1NQYXJzZXI6On5DU1NQYXJzZXIoKQog
ICAgIGZhc3RGcmVlKG1fZGF0YSk7CiAKICAgICBmYXN0RGVsZXRlQWxsVmFsdWVzKG1fZmxvYXRp
bmdTZWxlY3RvcnMpOworICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2Zsb2F0aW5nU2VsZWN0b3JWZWN0
b3JzKTsKICAgICBkZWxldGVBbGxWYWx1ZXMobV9mbG9hdGluZ1ZhbHVlTGlzdHMpOwogICAgIGRl
bGV0ZUFsbFZhbHVlcyhtX2Zsb2F0aW5nRnVuY3Rpb25zKTsKIH0KQEAgLTU2NDMsNiArNTY0NCw3
IEBAIGludCBDU1NQYXJzZXI6OmxleCh2b2lkKiB5eWx2YWxXaXRob3V0VHlwZSkKICAgICBjYXNl
IERJTUVOOgogICAgIGNhc2UgVU5JQ09ERVJBTkdFOgogICAgIGNhc2UgRlVOQ1RJT046CisgICAg
Y2FzZSBBTllGVU5DVElPTjoKICAgICBjYXNlIE5PVEZVTkNUSU9OOgogICAgICAgICB5eWx2YWwt
PnN0cmluZy5jaGFyYWN0ZXJzID0gdDsKICAgICAgICAgeXlsdmFsLT5zdHJpbmcubGVuZ3RoID0g
bGVuZ3RoOwpAQCAtNTg1Niw2ICs1ODU4LDIyIEBAIFBhc3NPd25QdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+IENTU1BhcnNlcjo6c2lua0Zsb2F0aW5nU2VsZWN0b3IoQ1NTUGFyc2VyU2VsZWN0b3IqCiAg
ICAgcmV0dXJuIGFkb3B0UHRyKHNlbGVjdG9yKTsKIH0KIAorVmVjdG9yPE93blB0cjxDU1NQYXJz
ZXJTZWxlY3Rvcj4gPiogQ1NTUGFyc2VyOjpjcmVhdGVGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKCkK
K3sKKyAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvclZlY3Rv
ciA9IG5ldyBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+OworICAgIG1fZmxvYXRp
bmdTZWxlY3RvclZlY3RvcnMuYWRkKHNlbGVjdG9yVmVjdG9yKTsKKyAgICByZXR1cm4gc2VsZWN0
b3JWZWN0b3I7Cit9CisKK1ZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIENTU1Bh
cnNlcjo6c2lua0Zsb2F0aW5nU2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJT
ZWxlY3Rvcj4gPiogc2VsZWN0b3JWZWN0b3IpCit7CisgICAgaWYgKHNlbGVjdG9yVmVjdG9yKSB7
CisgICAgICAgIEFTU0VSVChtX2Zsb2F0aW5nU2VsZWN0b3JWZWN0b3JzLmNvbnRhaW5zKHNlbGVj
dG9yVmVjdG9yKSk7CisgICAgICAgIG1fZmxvYXRpbmdTZWxlY3RvclZlY3RvcnMucmVtb3ZlKHNl
bGVjdG9yVmVjdG9yKTsKKyAgICB9CisgICAgcmV0dXJuIHNlbGVjdG9yVmVjdG9yOworfQorCiBD
U1NQYXJzZXJWYWx1ZUxpc3QqIENTU1BhcnNlcjo6Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKQog
ewogICAgIENTU1BhcnNlclZhbHVlTGlzdCogbGlzdCA9IG5ldyBDU1NQYXJzZXJWYWx1ZUxpc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggZjBlZmVlNWNlNGIzYjY4MDg1NzQwNWQ0YWU0NTg1
YjFmYzgyZjk0OC4uZTQ0MWFiYmIxYjBjYWQ3ZTQ4Nzg4Nzg1MmQ4MjU5ZjgzMWM5Nzk1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtMTgzLDYgKzE4Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsK
ICAgICAgICAgUGFzc093blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gc2lua0Zsb2F0aW5nU2VsZWN0
b3IoQ1NTUGFyc2VyU2VsZWN0b3IqKTsKIAorICAgICAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNl
clNlbGVjdG9yPiA+KiBjcmVhdGVGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgIFZl
Y3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNpbmtGbG9hdGluZ1NlbGVjdG9yVmVj
dG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qKTsKKwogICAgICAgICBDU1NQ
YXJzZXJWYWx1ZUxpc3QqIGNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0KCk7CiAgICAgICAgIENTU1Bh
cnNlclZhbHVlTGlzdCogc2lua0Zsb2F0aW5nVmFsdWVMaXN0KENTU1BhcnNlclZhbHVlTGlzdCop
OwogCkBAIC0zMTYsNiArMzE5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBWZWN0
b3I8UmVmUHRyPFN0eWxlQmFzZT4gPiBtX3BhcnNlZFN0eWxlT2JqZWN0czsKICAgICAgICAgVmVj
dG9yPFJlZlB0cjxDU1NSdWxlTGlzdD4gPiBtX3BhcnNlZFJ1bGVMaXN0czsKICAgICAgICAgSGFz
aFNldDxDU1NQYXJzZXJTZWxlY3Rvcio+IG1fZmxvYXRpbmdTZWxlY3RvcnM7CisgICAgICAgIEhh
c2hTZXQ8VmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPio+IG1fZmxvYXRpbmdTZWxl
Y3RvclZlY3RvcnM7CiAgICAgICAgIEhhc2hTZXQ8Q1NTUGFyc2VyVmFsdWVMaXN0Kj4gbV9mbG9h
dGluZ1ZhbHVlTGlzdHM7CiAgICAgICAgIEhhc2hTZXQ8Q1NTUGFyc2VyRnVuY3Rpb24qPiBtX2Zs
b2F0aW5nRnVuY3Rpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyVmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCmlu
ZGV4IGRjMGU4MmJmOWM1OWQxZTY0NzA1ZDdlZTYwNzgxMjZkYWZiMzM1ZGMuLjllY2I5NmRlMmRi
M2UzZWJkMTdhM2E2Njk5ZGQ5N2E5ZDdmZjlhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXJWYWx1ZXMuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQ1NTRnVuY3Rpb25WYWx1
ZS5oIgogI2luY2x1ZGUgIkNTU1F1aXJrUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NT
ZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIApAQCAtOTYsNSArOTcsMTEgQEAgQ1NTUGFyc2VyU2VsZWN0b3I6On5D
U1NQYXJzZXJTZWxlY3RvcigpCiAgICAgZGVsZXRlQWxsVmFsdWVzKHRvRGVsZXRlKTsKIH0KIAor
dm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6YWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRy
PENTU1BhcnNlclNlbGVjdG9yPiA+JiBzZWxlY3RvclZlY3RvcikKK3sKKyAgICBDU1NTZWxlY3Rv
ckxpc3QqIHNlbGVjdG9yTGlzdCA9IGZhc3ROZXc8Q1NTU2VsZWN0b3JMaXN0PigpOworICAgIHNl
bGVjdG9yTGlzdC0+YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7CisgICAgbV9z
ZWxlY3Rvci0+c2V0U2VsZWN0b3JMaXN0KGFkb3B0UHRyKHNlbGVjdG9yTGlzdCkpOworfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKaW5kZXggZDA4NDA5MTFhNDJjNzg4ZjI1
M2VhY2IwOTVjNmMxMDk5NDFkYTJkNy4uMGNlZWViMjNlZDUzYjZiZWRlNGM0OTRkOWYyMTFjZjAw
OGFjNjM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaApAQCAtMTA5LDcgKzEw
OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1hdGNoKENTU1NlbGVjdG9yOjpNYXRjaCB2YWx1
ZSkgeyBtX3NlbGVjdG9yLT5tX21hdGNoID0gdmFsdWU7IH0KICAgICB2b2lkIHNldFJlbGF0aW9u
KENTU1NlbGVjdG9yOjpSZWxhdGlvbiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5tX3JlbGF0aW9uID0g
dmFsdWU7IH0KICAgICB2b2lkIHNldEZvclBhZ2UoKSB7IG1fc2VsZWN0b3ItPnNldEZvclBhZ2Uo
KTsgfQotICAgIAorCisgICAgdm9pZCBhZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8
Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVjdG9yVmVjdG9yKTsKKwogICAgIENTU1NlbGVjdG9y
OjpQc2V1ZG9UeXBlIHBzZXVkb1R5cGUoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5wc2V1
ZG9UeXBlKCk7IH0KICAgICBib29sIGlzVW5rbm93blBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBtX3NlbGVjdG9yLT5pc1Vua25vd25Qc2V1ZG9FbGVtZW50KCk7IH0KICAgICBib29sIGlz
U2ltcGxlKCkgY29uc3QgeyByZXR1cm4gIW1fdGFnSGlzdG9yeSAmJiBtX3NlbGVjdG9yLT5pc1Np
bXBsZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCBjODA0Njk3OTU2NWI1
ZWM0ODlhZWQzNmY0YzIwZTEzYTIyNGFjMmE4Li44Njc1ZjJhZTE4ZWQ5Yjk2NGJkNWVlMWIzZWVh
YmVhMjA0ZThiODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogCiAjaW5jbHVkZSAiQ1NTT01VdGlscy5o
IgorI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAg
LTc4LDYgKzc5LDggQEAgaW5saW5lIHVuc2lnbmVkIENTU1NlbGVjdG9yOjpzcGVjaWZpY2l0eUZv
ck9uZVNlbGVjdG9yKCkgY29uc3QKICAgICBjYXNlIENvbnRhaW46CiAgICAgY2FzZSBCZWdpbjoK
ICAgICBjYXNlIEVuZDoKKyAgICAgICAgLy8gRklYTUU6IFBzdWVkb0FueSBzaG91bGQgYmFzZSB0
aGUgc3BlY2lmaWNpdHkgb24gdGhlIHN1Yi1zZWxlY3RvcnMuCisgICAgICAgIC8vIFNlZSBodHRw
Oi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxMFNlcC8wNTMwLmh0
bWwKICAgICAgICAgaWYgKHBzZXVkb1R5cGUoKSA9PSBQc2V1ZG9Ob3QgJiYgc2ltcGxlU2VsZWN0
b3IoKSkKICAgICAgICAgICAgIHMgKz0gc2ltcGxlU2VsZWN0b3IoKS0+c3BlY2lmaWNpdHlGb3JP
bmVTZWxlY3RvcigpOwogICAgICAgICBlbHNlCkBAIC0yMTEsNiArMjE0LDcgQEAgUHNldWRvSWQg
Q1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVkb1R5cGUgdHlwZSkKICAgICBjYXNlIFBzZXVkb050
aExhc3RPZlR5cGU6CiAgICAgY2FzZSBQc2V1ZG9MaW5rOgogICAgIGNhc2UgUHNldWRvVmlzaXRl
ZDoKKyAgICBjYXNlIFBzZXVkb0FueToKICAgICBjYXNlIFBzZXVkb0FueUxpbms6CiAgICAgY2Fz
ZSBQc2V1ZG9BdXRvZmlsbDoKICAgICBjYXNlIFBzZXVkb0hvdmVyOgpAQCAtMjY1LDYgKzI2OSw3
IEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRv
VHlwZT4qIG5hbWVUb1BzZXVkb1R5cGVNYXAoCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGFjdGl2ZSwgKCJhY3RpdmUiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGFmdGVyLCAoImFmdGVyIikpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBhbnksICgiLXdlYmtpdC1hbnkoIikpOwogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBhbnlMaW5rLCAoIi13ZWJraXQtYW55LWxpbmsiKSk7CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGF1dG9maWxsLCAoIi13ZWJraXQt
YXV0b2ZpbGwiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGJlZm9y
ZSwgKCJiZWZvcmUiKSk7CkBAIC0zNjQsNiArMzY5LDcgQEAgc3RhdGljIEhhc2hNYXA8QXRvbWlj
U3RyaW5nSW1wbCosIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlPiogbmFtZVRvUHNldWRvVHlwZU1h
cCgKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGFjdGl2ZS5pbXBsKCksIENTU1NlbGVj
dG9yOjpQc2V1ZG9BY3RpdmUpOwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoYWZ0ZXIu
aW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvQWZ0ZXIpOwogICAgICAgICBuYW1lVG9Qc2V1ZG9U
eXBlLT5zZXQoYW55TGluay5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9BbnlMaW5rKTsKKyAg
ICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGFueS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1
ZG9BbnkpOwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoYXV0b2ZpbGwuaW1wbCgpLCBD
U1NTZWxlY3Rvcjo6UHNldWRvQXV0b2ZpbGwpOwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5z
ZXQoYmVmb3JlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0JlZm9yZSk7CiAgICAgICAgIG5h
bWVUb1BzZXVkb1R5cGUtPnNldChjaGVja2VkLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0No
ZWNrZWQpOwpAQCAtNTI3LDYgKzUzMyw3IEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1
ZG9UeXBlKCkgY29uc3QKICAgICBjYXNlIFBzZXVkb050aExhc3RPZlR5cGU6CiAgICAgY2FzZSBQ
c2V1ZG9MaW5rOgogICAgIGNhc2UgUHNldWRvVmlzaXRlZDoKKyAgICBjYXNlIFBzZXVkb0FueToK
ICAgICBjYXNlIFBzZXVkb0FueUxpbms6CiAgICAgY2FzZSBQc2V1ZG9BdXRvZmlsbDoKICAgICBj
YXNlIFBzZXVkb0hvdmVyOgpAQCAtNjM4LDE3ICs2NDUsMzMgQEAgU3RyaW5nIENTU1NlbGVjdG9y
OjpzZWxlY3RvclRleHQoKSBjb25zdAogICAgICAgICB9IGVsc2UgaWYgKGNzLT5tX21hdGNoID09
IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyB8fCBjcy0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6
UGFnZVBzZXVkb0NsYXNzKSB7CiAgICAgICAgICAgICBzdHIgKz0gIjoiOwogICAgICAgICAgICAg
c3RyICs9IGNzLT52YWx1ZSgpOwotICAgICAgICAgICAgaWYgKGNzLT5wc2V1ZG9UeXBlKCkgPT0g
UHNldWRvTm90KSB7CisKKyAgICAgICAgICAgIHN3aXRjaCAoY3MtPnBzZXVkb1R5cGUoKSkgewor
ICAgICAgICAgICAgY2FzZSBQc2V1ZG9Ob3Q6CiAgICAgICAgICAgICAgICAgaWYgKENTU1NlbGVj
dG9yKiBzdWJTZWwgPSBjcy0+c2ltcGxlU2VsZWN0b3IoKSkKICAgICAgICAgICAgICAgICAgICAg
c3RyICs9IHN1YlNlbC0+c2VsZWN0b3JUZXh0KCk7CiAgICAgICAgICAgICAgICAgc3RyICs9ICIp
IjsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY3MtPnBzZXVkb1R5cGUoKSA9PSBQc2V1ZG9MYW5n
Ci0gICAgICAgICAgICAgICAgICAgIHx8IGNzLT5wc2V1ZG9UeXBlKCkgPT0gUHNldWRvTnRoQ2hp
bGQKLSAgICAgICAgICAgICAgICAgICAgfHwgY3MtPnBzZXVkb1R5cGUoKSA9PSBQc2V1ZG9OdGhM
YXN0Q2hpbGQKLSAgICAgICAgICAgICAgICAgICAgfHwgY3MtPnBzZXVkb1R5cGUoKSA9PSBQc2V1
ZG9OdGhPZlR5cGUKLSAgICAgICAgICAgICAgICAgICAgfHwgY3MtPnBzZXVkb1R5cGUoKSA9PSBQ
c2V1ZG9OdGhMYXN0T2ZUeXBlKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIFBzZXVkb0xhbmc6CisgICAgICAgICAgICBjYXNlIFBzZXVkb050aENoaWxkOgorICAg
ICAgICAgICAgY2FzZSBQc2V1ZG9OdGhMYXN0Q2hpbGQ6CisgICAgICAgICAgICBjYXNlIFBzZXVk
b050aE9mVHlwZToKKyAgICAgICAgICAgIGNhc2UgUHNldWRvTnRoTGFzdE9mVHlwZToKICAgICAg
ICAgICAgICAgICBzdHIgKz0gY3MtPmFyZ3VtZW50KCk7CiAgICAgICAgICAgICAgICAgc3RyICs9
ICIpIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUHNldWRvQW55
OiB7CisgICAgICAgICAgICAgICAgQ1NTU2VsZWN0b3IqIGZpcnN0U3ViU2VsZWN0b3IgPSBjcy0+
c2VsZWN0b3JMaXN0KCktPmZpcnN0KCk7CisgICAgICAgICAgICAgICAgZm9yIChDU1NTZWxlY3Rv
ciogc3ViU2VsZWN0b3IgPSBmaXJzdFN1YlNlbGVjdG9yOyBzdWJTZWxlY3Rvcjsgc3ViU2VsZWN0
b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc3ViU2VsZWN0b3IpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChzdWJTZWxlY3RvciAhPSBmaXJzdFN1YlNlbGVjdG9yKQorICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyICs9ICIsIjsKKyAgICAgICAgICAgICAgICAgICAgc3RyICs9IHN1YlNl
bGVjdG9yLT5zZWxlY3RvclRleHQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgc3RyICs9ICIpIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSBpZiAoY3MtPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0Vs
ZW1lbnQpIHsKICAgICAgICAgICAgIHN0ciArPSAiOjoiOwpAQCAtNzQyLDYgKzc2NSwxMiBAQCB2
b2lkIENTU1NlbGVjdG9yOjpzZXRTaW1wbGVTZWxlY3RvcihQYXNzT3duUHRyPENTU1NlbGVjdG9y
PiB2YWx1ZSkKICAgICBjcmVhdGVSYXJlRGF0YSgpOyAKICAgICBtX2RhdGEubV9yYXJlRGF0YS0+
bV9zaW1wbGVTZWxlY3RvciA9IHZhbHVlOyAKIH0KKyAgICAKK3ZvaWQgQ1NTU2VsZWN0b3I6OnNl
dFNlbGVjdG9yTGlzdChQYXNzT3duUHRyPENTU1NlbGVjdG9yTGlzdD4gc2VsZWN0b3JMaXN0KQor
eworICAgIGNyZWF0ZVJhcmVEYXRhKCk7IAorICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVj
dG9yTGlzdCA9IHNlbGVjdG9yTGlzdDsKK30KIAogYm9vbCBDU1NTZWxlY3Rvcjo6cGFyc2VOdGgo
KQogewpAQCAtNzg0LDYgKzgxMywyMSBAQCBib29sIENTU1NlbGVjdG9yOjppc1NpbXBsZSgpIGNv
bnN0CiAgICAgcmV0dXJuIG51bUNvbmRpdGlvbnMgPD0gMTsKIH0KIAorQ1NTU2VsZWN0b3I6OlJh
cmVEYXRhOjpSYXJlRGF0YShQYXNzUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IHZhbHVlKQorICAg
IDogbV92YWx1ZSh2YWx1ZS5sZWFrUmVmKCkpCisgICAgLCBtX2EoMCkKKyAgICAsIG1fYigwKQor
ICAgICwgbV9hdHRyaWJ1dGUoYW55UU5hbWUoKSkKKyAgICAsIG1fYXJndW1lbnQobnVsbEF0b20p
Cit7Cit9CisKK0NTU1NlbGVjdG9yOjpSYXJlRGF0YTo6flJhcmVEYXRhKCkKK3sKKyAgICBpZiAo
bV92YWx1ZSkKKyAgICAgICAgbV92YWx1ZS0+ZGVyZWYoKTsKK30KKyAgICAKIC8vIGEgaGVscGVy
IGZ1bmN0aW9uIGZvciBwYXJzaW5nIG50aC1hcmd1bWVudHMKIGJvb2wgQ1NTU2VsZWN0b3I6OlJh
cmVEYXRhOjpwYXJzZU50aCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCmluZGV4IGJhNWUx
YTg5MWMxMTkxZmRkODI0MWVlMDRjOGQxNjhkNTgzYThlMTUuLjkwNWQ5OWFmZWFkNmFiMmRjNTVj
MDg5MzVmZTFkMDNlZTcyMDhhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgeworICAgIGNsYXNzIENTU1NlbGVjdG9yTGlzdDsKIAogICAgIC8vIHRoaXMgY2xhc3MgcmVw
cmVzZW50cyBhIHNlbGVjdG9yIGZvciBhIFN0eWxlUnVsZQogICAgIGNsYXNzIENTU1NlbGVjdG9y
IHsKQEAgLTEyOSw2ICsxMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBQ
c2V1ZG9OdGhMYXN0T2ZUeXBlLAogICAgICAgICAgICAgUHNldWRvTGluaywKICAgICAgICAgICAg
IFBzZXVkb1Zpc2l0ZWQsCisgICAgICAgICAgICBQc2V1ZG9BbnksCiAgICAgICAgICAgICBQc2V1
ZG9BbnlMaW5rLAogICAgICAgICAgICAgUHNldWRvQXV0b2ZpbGwsCiAgICAgICAgICAgICBQc2V1
ZG9Ib3ZlciwKQEAgLTI0OCwxMiArMjUwLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgYXJndW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2hhc1JhcmVEYXRhID8g
bV9kYXRhLm1fcmFyZURhdGEtPm1fYXJndW1lbnQgOiBudWxsQXRvbTsgfQogICAgICAgICBDU1NT
ZWxlY3Rvciogc2ltcGxlU2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2hhc1JhcmVEYXRhID8g
bV9kYXRhLm1fcmFyZURhdGEtPm1fc2ltcGxlU2VsZWN0b3IuZ2V0KCkgOiAwOyB9CisgICAgICAg
IENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSYXJl
RGF0YSA/IG1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdC5nZXQoKSA6IDA7IH0KICAg
ICAgICAgCiAgICAgICAgIHZvaWQgc2V0VGFnKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlKSB7
IG1fdGFnID0gdmFsdWU7IH0KICAgICAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJp
bmcmKTsKICAgICAgICAgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgICAgICB2b2lkIHNldEFyZ3VtZW50KGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgICAgICB2
b2lkIHNldFNpbXBsZVNlbGVjdG9yKFBhc3NPd25QdHI8Q1NTU2VsZWN0b3I+KTsKKyAgICAgICAg
dm9pZCBzZXRTZWxlY3Rvckxpc3QoUGFzc093blB0cjxDU1NTZWxlY3Rvckxpc3Q+KTsKICAgICAg
ICAgCiAgICAgICAgIGJvb2wgcGFyc2VOdGgoKTsKICAgICAgICAgYm9vbCBtYXRjaE50aChpbnQg
Y291bnQpOwpAQCAtMjk0LDE5ICsyOTgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHN0cnVjdCBSYXJlRGF0YSB7CiAgICAgICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSYXJl
RGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBwdWJsaWM6Ci0gICAgICAg
ICAgICBSYXJlRGF0YShQYXNzUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IHZhbHVlKQotICAgICAg
ICAgICAgICAgIDogbV92YWx1ZSh2YWx1ZS5sZWFrUmVmKCkpCi0gICAgICAgICAgICAgICAgLCBt
X2EoMCkKLSAgICAgICAgICAgICAgICAsIG1fYigwKQotICAgICAgICAgICAgICAgICwgbV9hdHRy
aWJ1dGUoYW55UU5hbWUoKSkKLSAgICAgICAgICAgICAgICAsIG1fYXJndW1lbnQobnVsbEF0b20p
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB+UmFyZURhdGEoKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlKQotICAgICAgICAgICAg
ICAgICAgICBtX3ZhbHVlLT5kZXJlZigpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgUmFy
ZURhdGEoUGFzc1JlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiB2YWx1ZSk7CisgICAgICAgICAgICB+
UmFyZURhdGEoKTsKIAogICAgICAgICAgICAgYm9vbCBwYXJzZU50aCgpOwogICAgICAgICAgICAg
Ym9vbCBtYXRjaE50aChpbnQgY291bnQpOwpAQCAtMzE0LDkgKzMwNywxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBtX3ZhbHVlOyAvLyBQbGFp
biBwb2ludGVyIHRvIGtlZXAgdGhpbmdzIHVuaWZvcm0gd2l0aCB0aGUgdW5pb24uCiAgICAgICAg
ICAgICBpbnQgbV9hOyAvLyBVc2VkIGZvciA6bnRoLSoKICAgICAgICAgICAgIGludCBtX2I7IC8v
IFVzZWQgZm9yIDpudGgtKgotICAgICAgICAgICAgT3duUHRyPENTU1NlbGVjdG9yPiBtX3NpbXBs
ZVNlbGVjdG9yOyAvLyBVc2VkIGZvciA6bm90LgorICAgICAgICAgICAgLy8gVXNlZCBmb3IgOm5v
dC4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBtX3NlbGVjdG9yTGlzdCBpbnN0ZWFkIHRvIHNhdmUg
bWVtb3J5LgorICAgICAgICAgICAgT3duUHRyPENTU1NlbGVjdG9yPiBtX3NpbXBsZVNlbGVjdG9y
OwogICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBtX2F0dHJpYnV0ZTsgLy8gdXNlZCBmb3IgYXR0
cmlidXRlIHNlbGVjdG9yCiAgICAgICAgICAgICBBdG9taWNTdHJpbmcgbV9hcmd1bWVudDsgLy8g
VXNlZCBmb3IgOmNvbnRhaW5zLCA6bGFuZyBhbmQgOm50aC0qCisgICAgICAgICAgICBPd25QdHI8
Q1NTU2VsZWN0b3JMaXN0PiBtX3NlbGVjdG9yTGlzdDsgLy8gVXNlZCBmb3IgOi13ZWJraXQtYW55
CiAgICAgICAgIH07CiAgICAgICAgIHZvaWQgY3JlYXRlUmFyZURhdGEoKTsKICAgICAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCmluZGV4IGQ2MmU1MzZjMGFmMWIxOTBh
NDRjMzk4OGQxYTdlZTlhOGI1NmVhMzYuLmI5YmRhNDk2Y2U5OTY0YjA2MWM2YWRjYWQ3ODZmZGMz
OTVlOTVlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCkBAIC0xMjYs
NiArMTI2LDEyIEBAIHN0YXRpYyBib29sIGZvckVhY2hUYWdTZWxlY3RvcihGdW5jdG9yJiBmdW5j
dG9yLCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCiAgICAgICAgICAgICBpZiAoZm9yRWFjaFRhZ1Nl
bGVjdG9yKGZ1bmN0b3IsIHNpbXBsZVNlbGVjdG9yKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQorICAgICAgICBpZiAoQ1NTU2VsZWN0b3JMaXN0KiBzZWxlY3Rvckxp
c3QgPSBzZWxlY3Rvci0+c2VsZWN0b3JMaXN0KCkpIHsKKyAgICAgICAgICAgIGZvciAoQ1NTU2Vs
ZWN0b3IqIHN1YlNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LT5maXJzdCgpOyBzdWJTZWxlY3Rvcjsg
c3ViU2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc3ViU2VsZWN0b3IpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGZvckVhY2hUYWdTZWxlY3RvcihmdW5jdG9yLCBzdWJTZWxlY3Rvcikp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAg
ICB9CiAgICAgfSB3aGlsZSAoKHNlbGVjdG9yID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkpOwog
CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CmluZGV4IDJhMGI5MjY5NGNiN2EzMjM0ZDVlNzc1NGEyNGYwOTE2MzQwNTMzY2EuLjYxODgzYTQ4
YzhmYjY3MDBlMzBmNTc5NGYyYmM2Y2QzMDViNmI2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAKQEAgLTI4NDIsNiArMjg0MiwxMiBAQCBib29sIENTU1N0eWxlU2Vs
ZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2Vs
LCBFbGVtZQogICAgICAgICAgICAgICAgIGlmIChlID09IGUtPmRvY3VtZW50KCktPmNzc1Rhcmdl
dCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0FueToKKyAgICAgICAg
ICAgICAgICBmb3IgKENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHNlbC0+c2VsZWN0b3JMaXN0KCkt
PmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxl
Y3RvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3Ioc2VsZWN0b3Is
IGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVsZW1lbnRTdHlsZSwgZWxl
bWVudFBhcmVudFN0eWxlKSA9PSBTZWxlY3Rvck1hdGNoZXMpCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9BbnlMaW5rOgogICAgICAg
ICAgICAgICAgIGlmIChlICYmIGUtPmlzTGluaygpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTMzMDIsNiArMzMwOCwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29sbGVj
dEZlYXR1cmVzRnJvbVNlbGVjdG9yKENTU1N0eWxlU2VsZWN0b3I6OkZlYXR1cmVzJiBmZWF0dQog
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Zpc2l0ZWQ6CiAgICAgICAgIGZlYXR1cmVzLnVz
ZXNMaW5rUnVsZXMgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9Bbnk6CisgICAgICAgIGZvciAoQ1NTU2VsZWN0b3IqIHN1YlNlbGVjdG9yID0gc2Vs
ZWN0b3ItPnNlbGVjdG9yTGlzdCgpLT5maXJzdCgpOyBzdWJTZWxlY3Rvcjsgc3ViU2VsZWN0b3Ig
PSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc3ViU2VsZWN0b3IpKQorICAgICAgICAgICAgY29sbGVj
dEZlYXR1cmVzRnJvbVNlbGVjdG9yKGZlYXR1cmVzLCBzdWJTZWxlY3Rvcik7CisgICAgICAgIHJl
dHVybjsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvdG9rZW5pemVyLmZsZXggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdG9r
ZW5pemVyLmZsZXgKaW5kZXggZWIxOGNiOTBiNGMwYmNkMWJmNDM5YWYyYTJhM2Y4NDM2M2EwNTY5
OS4uMGMwMWJiYjViN2NmYTBhNjc1YjNiOThmNDUwNTZkZjAxMDI1MDUyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL3Rva2VuaXplci5mbGV4CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy90b2tlbml6ZXIuZmxleApAQCAtMTA2LDYgKzEwNiw3IEBAIG50aCAgICAgICAgICAgICBbXCst
XT97aW50bnVtfSpuKFtcdFxyXG4gXSpbXCstXVtcdFxyXG4gXSp7aW50bnVtfSk/CiB7aW50bnVt
fSAgICAgICAgICAgICAgICB7eXlUb2sgPSBJTlRFR0VSOyByZXR1cm4geXlUb2s7fQoge251bX0g
ICAgICAgICAgICAgICAgICAge3l5VG9rID0gRkxPQVRUT0tFTjsgcmV0dXJuIHl5VG9rO30KIAor
Ii13ZWJraXQtYW55KCIgICAgICAgICAge3l5VG9rID0gQU5ZRlVOQ1RJT047IHJldHVybiB5eVRv
azt9CiAibm90KCIgICAgICAgICAgICAgICAgICB7eXlUb2sgPSBOT1RGVU5DVElPTjsgcmV0dXJu
IHl5VG9rO30KICJ1cmwoInt3fXtzdHJpbmd9e3d9IikiIHt5eVRvayA9IFVSSTsgcmV0dXJuIHl5
VG9rO30KICJ1cmwoInt3fXt1cmx9e3d9IikiICAgIHt5eVRvayA9IFVSSTsgcmV0dXJuIHl5VG9r
O30K
</data>
<flag name="review"
          id="78363"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>