<?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>12595</bug_id>
          
          <creation_ts>2007-02-04 11:03:26 -0800</creation_ts>
          <short_desc>REGRESSION: Can&apos;t add item to cart at lnt.com (JS type error)</short_desc>
          <delta_ts>2009-01-14 16:57:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>ap</cc>
    
    <cc>bdakin</cc>
    
    <cc>ian</cc>
    
    <cc>KwhiteRight</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>27769</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-04 11:03:26 -0800</bug_when>
    <thetext>2006-09-07 18:24:48 Alice Liu:
* SUMMARY
I tried to add this item at linens and things http://www.lnt.com/product/index.jsp?productId=2127427&amp;cp=1331607.1331947.2160003&amp;page=2&amp;doVSearch=no&amp;pageBucket=0&amp;parentPage=family to my cart, but a JS error prevented it from working.  TypeError: Undefined value

* STEPS TO REPRODUCE
1) go to an item page at lnt.com, like http://www.lnt.com/product/index.jsp?productId=2127427&amp;cp=1331607.1331947.2160003&amp;page=2&amp;doVSearch=no&amp;pageBucket=0&amp;parentPage=family
2) press the blue &quot;add tiems to cart&quot; button

* RESULTS
nothing, JS stopped processing because something is undefined.  

* REGRESSION
no idea yet, I&apos;m on Leopard 9A241 rt now, but i haven&apos;t tried this on Tiger safari yet. 

2006-09-08 15:24:25 Alice Liu:
Yes, this is a regression from Tiger.  

2006-09-12 16:44:50 Alice Liu:
Safari BRB Reviewed

2006-12-20 15:57:38 Alice Liu:
i am working on this

2007-01-26 17:13:28 Alice Liu:
i was working on this, but moved onto other bugs.  I will get back to this later but i&apos;m attaching a reduction of the problem.  Running this test in Safari 2.0, Safari TOT, firefox, and IE will show you the differences.

&lt;rdar://problem/4722863&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23397</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-02-13 21:52:47 -0800</bug_when>
    <thetext>(In reply to comment #0)

&gt; i was working on this, but moved onto other bugs.  I will get back to this
&gt; later but i&apos;m attaching a reduction of the problem.

I would be nice to have the reduction in Bugzilla, if possible!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22764</commentid>
    <comment_count>2</comment_count>
      <attachid>13270</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-20 00:14:26 -0800</bug_when>
    <thetext>Created attachment 13270
the reduction

Attached the mentioned reduction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21834</commentid>
    <comment_count>3</comment_count>
      <attachid>13361</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-02-24 05:02:59 -0800</bug_when>
    <thetext>Created attachment 13361
another test

Firefox even includes removed form elements in the collection!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19683</commentid>
    <comment_count>4</comment_count>
      <attachid>13572</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-09 20:22:13 -0800</bug_when>
    <thetext>Created attachment 13572
patch with change log and test case

And now, so do we!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19256</commentid>
    <comment_count>5</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-03-12 16:59:54 -0700</bug_when>
    <thetext>Some comments I noticed before deciding to question the approach:

1) I&apos;d like to see more tests for cases that should or should not close the canvas.

2) The correct spelling is &quot;well-formed&quot;, not &quot;wellformed&quot; or &quot;well formed&quot;.

And, finally, &lt;canvas&gt; should not skip parsing its contents - it should just prevent them from rendering only. That appears to be what Firefox does. One special case to consider is a &lt;script&gt; inside &lt;canvas&gt;, Firefox appears to execute it:

&lt;canvas&gt;
&lt;b&gt;fallback&lt;/b&gt;
&lt;script&gt;
alert(&apos;x&apos;);
&lt;/script&gt;
&lt;/canvas&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19257</commentid>
    <comment_count>6</comment_count>
      <attachid>13572</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-03-12 17:00:36 -0700</bug_when>
    <thetext>Comment on attachment 13572
patch with change log and test case

r-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19263</commentid>
    <comment_count>7</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-03-12 17:47:37 -0700</bug_when>
    <thetext>I put my comments and r- in the wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19241</commentid>
    <comment_count>8</comment_count>
      <attachid>13572</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-12 20:58:53 -0700</bug_when>
    <thetext>Comment on attachment 13572
patch with change log and test case

I believe Adele was reviewing this when Maciej accidentally marked it review-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19212</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-03-12 23:20:45 -0700</bug_when>
    <thetext>I started reviewing, but I don&apos;t understand this result:

+    shouldBe(&apos;form.original&apos;, &apos;a&apos;);
+    shouldBe(&apos;form.elements.original&apos;, &apos;a&apos;);
+
+    debug(&apos;&apos;);
+    debug(&quot;now change the form item a&apos;s name to second&quot;);
+    debug(&apos;&apos;);
+
+    a.name=&quot;second&quot;;
+
+    shouldBe(&apos;form.original&apos;, &apos;a&apos;);
+    shouldBe(&apos;form.elements.original&apos;, &apos;undefined&apos;);

Why does changing a.name make it inaccessible under its old name in the elements collection? Does the test explanation apply only to named access in the form, with a different behavior for named access in the elements collection?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19213</commentid>
    <comment_count>10</comment_count>
      <attachid>13572</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-03-12 23:46:22 -0700</bug_when>
    <thetext>Comment on attachment 13572
patch with change log and test case

Adele actually r+&apos;d this - reinstating that now. I think Darin&apos;s test case is indeed meant to illustrate the difference between named access and the elements collection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19197</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-13 06:28:45 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Why does changing a.name make it inaccessible under its old name in the
&gt; elements collection?

Because that&apos;s what Gecko does.

&gt; Does the test explanation apply only to named access in
&gt; the form, with a different behavior for named access in the elements
&gt; collection?

Yes, that&apos;s right. You can see that in the code change too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19150</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-13 07:33:57 -0700</bug_when>
    <thetext>Committed revision 20148.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18331</commentid>
    <comment_count>13</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2007-03-15 12:27:03 -0700</bug_when>
    <thetext>Re-opening this bug. I had to back it out with r20214 because it causes a memory trasher. Steps to reproduce trasher forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18332</commentid>
    <comment_count>14</comment_count>
      <attachid>13572</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2007-03-15 12:31:07 -0700</bug_when>
    <thetext>Comment on attachment 13572
patch with change log and test case

r-minusing the patch so as not to cause confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18338</commentid>
    <comment_count>15</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2007-03-15 13:09:28 -0700</bug_when>
    <thetext>Here are some ways to reproduce the memory trasher if anyone wants to:

Way One: 
Reload http://www.signonsandiego.com/news/riverside/ several times. Sometime you only have to reload once, but other times you have to reload many times.

Way Two:
1. Go to dominos.com
2. Click &quot;Order now&quot;
3. Enter an address, and click &quot;Continue&quot; (This part is tricky, some addresses don&apos;t provide the pizza store that repros the bug. One that does is 218 Broadway Revere, MA 02151)
4. On the Delivery or Pick up page, click &quot;Next&quot;
5. Under &quot;Build your own pizza&quot; select &quot;Choose size and crust&quot;
6. Design a pizza and add it. It will come up with an error saying that you have no selected a size or crust type because there is another bug with radio buttons on this page, which I am about to file.
7. Keep trying to add the pizza until it crashes.

Way Three:
1. Go to http://hotjobs.yahoo.com/
2. Type &quot;San jose, CA&quot; in City &amp; State/ Zip field. Click the Search button.
3. After search results appears,  click the Search button.
4. With the Search results still displayed, click the search button again. Crash.

This last one actually hits and assertion on Debug builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18414</commentid>
    <comment_count>16</comment_count>
      <attachid>13675</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2007-03-16 16:10:47 -0700</bug_when>
    <thetext>Created attachment 13675
new patch

I ended up rewriting the patch since I observed the behavior of Darin&apos;s patch did not quite match Firefox. Firefox seems to remember all names that have been used to access an element. Names that have not been used are forgotten. I expanded the test case to cover this and some other behaviors.

I did not include the large and somewhat risky looking refactoring from Darin&apos;s patch to get rid of DOMNamedNodesCollection. The issues it fixes (at least that you can&apos;t use item() on DOMNamedNodesCollections) are not directly related to this bug, are not regressions and should be handled separately.

No memory thrashing observed with this patch on those pages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18415</commentid>
    <comment_count>17</comment_count>
      <attachid>13675</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2007-03-16 16:38:57 -0700</bug_when>
    <thetext>Comment on attachment 13675
new patch

m_autocomplete(true)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

I should&apos;ve checked in a layout test for that...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18418</commentid>
    <comment_count>18</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2007-03-16 17:00:28 -0700</bug_when>
    <thetext>Eh. I just copied those lines from Darin patch. Is m_autocomplete supposed to be true or false here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18420</commentid>
    <comment_count>19</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2007-03-16 17:02:13 -0700</bug_when>
    <thetext>its supposed to be true.  Darin&apos;s patch accidently changed it to false...then I changed it back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18426</commentid>
    <comment_count>20</comment_count>
      <attachid>13675</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2007-03-17 01:10:23 -0700</bug_when>
    <thetext>Comment on attachment 13675
new patch

As long as you switch the m_autocomplete line, r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18439</commentid>
    <comment_count>21</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2007-03-17 05:09:45 -0700</bug_when>
    <thetext>r20260, with m_autocomplete(true)!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105820</commentid>
    <comment_count>22</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2009-01-14 16:57:30 -0800</bug_when>
    <thetext>The HTML5 spec now defines this. A couple of cases where Safari differs from the spec (and from other some of theo ther UAs): when an element is removed from the DOM, it is removed from the persistence map (Safari and Firefox keep persisting it); when two elements have the same name, and the name is accessed, nothing is persisted (IE persists the collection, Safari persists the first element).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>13270</attachid>
            <date>2007-02-20 00:14:26 -0800</date>
            <delta_ts>2007-02-20 00:14:26 -0800</delta_ts>
            <desc>the reduction</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>606</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">PGh0bWw+CjxzY3JpcHQ+CmZ1bmN0aW9uIHRlc3QoKQp7CiAgICBhbGVydCgiMSAiICsgZG9jdW1l
bnQudGhlRm9ybS50aGVOYW1lKTsKICAgIGFsZXJ0KCIyICIgKyBkb2N1bWVudC50aGVGb3JtLnRo
ZU5hbWUubmFtZSk7CiAgICBkb2N1bWVudC50aGVGb3JtLnRoZU5hbWUubmFtZT0iZGlmZmVyZW50
TmFtZSI7CiAgICBhbGVydCgiMyAiICsgZG9jdW1lbnQudGhlRm9ybS5kaWZmZXJlbnROYW1lKTsK
ICAgIGFsZXJ0KCI0ICIgKyBkb2N1bWVudC50aGVGb3JtLmRpZmZlcmVudE5hbWUubmFtZSk7CiAg
ICBhbGVydCgiNSAiICsgZG9jdW1lbnQudGhlRm9ybS50aGVOYW1lKTsgICAgICAgICAvLyB1bmRl
ZmluZWQgaW4gU2FmYXJpIDMuMCwgd29ya3MgaW4gMi4wCiAgICBhbGVydCgiNiAiICsgZG9jdW1l
bnQudGhlRm9ybS50aGVOYW1lLm5hbWUpOyAgICAvLyB0eXBlIGVycm9yIGluIFNhZmFyaSAzLjAs
IHdvcmtzIGluIDIuMAp9Cjwvc2NyaXB0Pgo8Ym9keSBvbmxvYWQ9J3Rlc3QoKTsnPgo8Zm9ybSBu
YW1lPSd0aGVGb3JtJz4KPGlucHV0IHR5cGU9J2hpZGRlbicgdmFsdWU9J3RoZVZhbHVlJyBuYW1l
PSd0aGVOYW1lJz4KPC9mb3JtPgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>13361</attachid>
            <date>2007-02-24 05:02:59 -0800</date>
            <delta_ts>2007-02-24 05:02:59 -0800</delta_ts>
            <desc>another test</desc>
            <filename>removed-element.html</filename>
            <type>text/html</type>
            <size>450</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">PGh0bWw+CjxzY3JpcHQ+CmZ1bmN0aW9uIHRlc3QoKQp7CiAgICBhbGVydCgiMSAiICsgZG9jdW1l
bnQudGhlRm9ybS50aGVOYW1lKTsKICAgIGFsZXJ0KCIyICIgKyBkb2N1bWVudC50aGVGb3JtLnRo
ZU5hbWUubmFtZSk7CgogICAgZG9jdW1lbnQudGhlRm9ybS5yZW1vdmVDaGlsZChkb2N1bWVudC50
aGVGb3JtLnRoZU5hbWUpOwovLyAgICBkb2N1bWVudC5yZW1vdmVDaGlsZChkb2N1bWVudC50aGVG
b3JtKTsKCiAgICBhbGVydCgiMyAiICsgZG9jdW1lbnQudGhlRm9ybS50aGVOYW1lKTsKICAgIGFs
ZXJ0KCI0ICIgKyBkb2N1bWVudC50aGVGb3JtLnRoZU5hbWUubmFtZSk7Cn0KPC9zY3JpcHQ+Cjxi
b2R5IG9ubG9hZD0ndGVzdCgpOyc+Cjxmb3JtIG5hbWU9J3RoZUZvcm0nPgo8aW5wdXQgdmFsdWU9
J3RoZVZhbHVlJyBuYW1lPSd0aGVOYW1lJz4KPC9mb3JtPgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13572</attachid>
            <date>2007-03-09 20:22:13 -0800</date>
            <delta_ts>2007-03-15 12:31:07 -0700</delta_ts>
            <desc>patch with change log and test case</desc>
            <filename>OldNamesPatch.txt</filename>
            <type>text/plain</type>
            <size>42533</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIwMDk1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDctMDMtMDkgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIC0gdGVzdCBmb3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI1OTUKKyAgICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDcyMjg2Mz4gUkVHUkVTU0lPTjogQ2Fu
J3QgYWRkIGl0ZW0gdG8gY2FydCBhdCBsbnQuY29tCisgICAgICAgICAgKEpTIHR5cGUgZXJyb3Ip
ICgxMjU5NSkKKworICAgICAgICAqIGZhc3QvZm9ybXMvb2xkLW5hbWVzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9vbGQtbmFtZXMuaHRtbDogQWRkZWQuCisKIDIw
MDctMDMtMDkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEp1c3Rpbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvb2xkLW5hbWVzLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29sZC1uYW1l
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29s
ZC1uYW1lcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzcgQEAKK1RoaXMg
dGVzdHMgYWNjZXNzaW5nIGZvcm0gZWxlbWVudHMgYnkgbmFtZS4gSUUgb25seSBsZXRzIHlvdSBs
b29rIHVwIG5hbWVzIHVuZGVyIHRoZSBmaXJzdCBuYW1lIHRoZSBlbGVtZW50IGhhZCBhbmQgZG9l
cyBub3QgcmVzcG9uZCB0byBuYW1lIGNoYW5nZXMuIEZpcmVmb3ggd2lsbCBsZXQgZWFjaCBlbGVt
ZW50IGJlIGxvb2tlZCB1cCB1bmRlciBpdHMgb3JpZ2luYWwgbmFtZSBhcyBsb25nIGFzIG5vIGFj
dHVhbCBlbGVtZW50IGhhcyB0aGF0IG5hbWUuIFRoaXMgdGVzdCBoYXMgYmVlbiB3cml0dGVuIHRv
IGV4cGVjdCB0aGUgRmlyZWZveCBiZWhhdmlvci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgZm9ybS5sZW5ndGggaXMgMgorUEFTUyBmb3JtLm9yaWdpbmFsIGlzIGEKK1BB
U1MgZm9ybS5vcmlnaW5hbEIgaXMgYgorUEFTUyBmb3JtLnNlY29uZCBpcyB1bmRlZmluZWQKK1BB
U1MgZm9ybS50aGlyZCBpcyB1bmRlZmluZWQKK1BBU1MgZm9ybS5lbGVtZW50cy5vcmlnaW5hbCBp
cyBhCitQQVNTIGZvcm0uZWxlbWVudHMub3JpZ2luYWxCIGlzIGIKK1BBU1MgZm9ybS5lbGVtZW50
cy5zZWNvbmQgaXMgdW5kZWZpbmVkCitQQVNTIGZvcm0uZWxlbWVudHMudGhpcmQgaXMgdW5kZWZp
bmVkCisKK25vdyBjaGFuZ2UgdGhlIGZvcm0gaXRlbSBhJ3MgbmFtZSB0byBzZWNvbmQKKworUEFT
UyBmb3JtLmxlbmd0aCBpcyAyCitQQVNTIGZvcm0ub3JpZ2luYWwgaXMgYQorUEFTUyBmb3JtLm9y
aWdpbmFsQiBpcyBiCitQQVNTIGZvcm0uc2Vjb25kIGlzIGEKK1BBU1MgZm9ybS50aGlyZCBpcyB1
bmRlZmluZWQKK1BBU1MgZm9ybS5lbGVtZW50cy5vcmlnaW5hbCBpcyB1bmRlZmluZWQKK1BBU1Mg
Zm9ybS5lbGVtZW50cy5vcmlnaW5hbEIgaXMgYgorUEFTUyBmb3JtLmVsZW1lbnRzLnNlY29uZCBp
cyBhCitQQVNTIGZvcm0uZWxlbWVudHMudGhpcmQgaXMgdW5kZWZpbmVkCisKK25vdyBjaGFuZ2Ug
dGhlIGZvcm0gaXRlbSBhJ3MgbmFtZSB0byB0aGlyZAorCitQQVNTIGZvcm0ubGVuZ3RoIGlzIDIK
K1BBU1MgZm9ybS5vcmlnaW5hbCBpcyBhCitQQVNTIGZvcm0ub3JpZ2luYWxCIGlzIGIKK1BBU1Mg
Zm9ybS5zZWNvbmQgaXMgYQorUEFTUyBmb3JtLnRoaXJkIGlzIGEKK1BBU1MgZm9ybS5lbGVtZW50
cy5vcmlnaW5hbCBpcyB1bmRlZmluZWQKK1BBU1MgZm9ybS5lbGVtZW50cy5vcmlnaW5hbEIgaXMg
YgorUEFTUyBmb3JtLmVsZW1lbnRzLnNlY29uZCBpcyB1bmRlZmluZWQKK1BBU1MgZm9ybS5lbGVt
ZW50cy50aGlyZCBpcyBhCisKK25vdyBjaGFuZ2UgZm9ybSBpdGVtIGIncyBuYW1lIHRvIHNlY29u
ZAorCitQQVNTIGZvcm0ubGVuZ3RoIGlzIDIKK1BBU1MgZm9ybS5vcmlnaW5hbCBpcyBhCitQQVNT
IGZvcm0ub3JpZ2luYWxCIGlzIGIKK1BBU1MgZm9ybS5zZWNvbmQgaXMgYgorUEFTUyBmb3JtLmVs
ZW1lbnRzLm9yaWdpbmFsIGlzIHVuZGVmaW5lZAorUEFTUyBmb3JtLmVsZW1lbnRzLm9yaWdpbmFs
QiBpcyB1bmRlZmluZWQKK1BBU1MgZm9ybS5lbGVtZW50cy5zZWNvbmQgaXMgYgorCitub3cgY2hh
bmdlIGEgZm9ybSBpdGVtIGIncyBuYW1lIHRvIHRoaXJkCisKK1BBU1MgZm9ybS5sZW5ndGggaXMg
MgorUEFTUyBmb3JtLm9yaWdpbmFsIGlzIGEKK1BBU1MgZm9ybS5vcmlnaW5hbEIgaXMgYgorUEFT
UyBmb3JtLnNlY29uZCBpcyBiCitQQVNTIGZvcm0udGhpcmQubGVuZ3RoIGlzIDIKK1BBU1MgZm9y
bS50aGlyZC5pdGVtKDApIGlzIGEKK1BBU1MgZm9ybS50aGlyZC5pdGVtKDEpIGlzIGIKK1BBU1Mg
Zm9ybS5lbGVtZW50cy5vcmlnaW5hbCBpcyB1bmRlZmluZWQKK1BBU1MgZm9ybS5lbGVtZW50cy5v
cmlnaW5hbEIgaXMgdW5kZWZpbmVkCitQQVNTIGZvcm0uZWxlbWVudHMuc2Vjb25kIGlzIHVuZGVm
aW5lZAorUEFTUyBmb3JtLmVsZW1lbnRzLnRoaXJkLmxlbmd0aCBpcyAyCitQQVNTIGZvcm0uZWxl
bWVudHMudGhpcmQuaXRlbSgwKSBpcyBhCitQQVNTIGZvcm0uZWxlbWVudHMudGhpcmQuaXRlbSgx
KSBpcyBiCisKK25vdyByZW1vdmUgZWxlbWVudCBhCisKK1BBU1MgZm9ybS5sZW5ndGggaXMgMQor
UEFTUyBmb3JtLm9yaWdpbmFsIGlzIGEKK1BBU1MgZm9ybS5vcmlnaW5hbEIgaXMgYgorUEFTUyBm
b3JtLnNlY29uZCBpcyBiCitQQVNTIGZvcm0udGhpcmQgaXMgYgorUEFTUyBmb3JtLmVsZW1lbnRz
Lm9yaWdpbmFsIGlzIHVuZGVmaW5lZAorUEFTUyBmb3JtLmVsZW1lbnRzLm9yaWdpbmFsQiBpcyB1
bmRlZmluZWQKK1BBU1MgZm9ybS5lbGVtZW50cy5zZWNvbmQgaXMgdW5kZWZpbmVkCitQQVNTIGZv
cm0uZWxlbWVudHMudGhpcmQgaXMgYgorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL29sZC1uYW1lcy1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46
ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbGQt
bmFtZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29sZC1uYW1l
cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbGQtbmFtZXMu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjAgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAg
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgYWNjZXNzaW5nIGZvcm0gZWxlbWVudHMgYnkgbmFtZS4g
IgorICAgICAgICArICJJRSBvbmx5IGxldHMgeW91IGxvb2sgdXAgbmFtZXMgdW5kZXIgdGhlIGZp
cnN0IG5hbWUgdGhlIGVsZW1lbnQgaGFkIGFuZCAiCisgICAgICAgICsgImRvZXMgbm90IHJlc3Bv
bmQgdG8gbmFtZSBjaGFuZ2VzLiBGaXJlZm94IHdpbGwgbGV0IGVhY2ggZWxlbWVudCBiZSBsb29r
ZWQgIgorICAgICAgICArICJ1cCB1bmRlciBpdHMgb3JpZ2luYWwgbmFtZSBhcyBsb25nIGFzIG5v
IGFjdHVhbCBlbGVtZW50IGhhcyB0aGF0IG5hbWUuICIKKyAgICAgICAgKyAiVGhpcyB0ZXN0IGhh
cyBiZWVuIHdyaXR0ZW4gdG8gZXhwZWN0IHRoZSBGaXJlZm94IGJlaGF2aW9yLiIpOworCisgICAg
Zm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3JtJyk7CisgICAgYSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdhJyk7CisgICAgYiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdi
Jyk7CisKKyAgICBzaG91bGRCZSgnZm9ybS5sZW5ndGgnLCAnMicpOworICAgIHNob3VsZEJlKCdm
b3JtLm9yaWdpbmFsJywgJ2EnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5vcmlnaW5hbEInLCAnYicp
OworICAgIHNob3VsZEJlKCdmb3JtLnNlY29uZCcsICd1bmRlZmluZWQnKTsKKyAgICBzaG91bGRC
ZSgnZm9ybS50aGlyZCcsICd1bmRlZmluZWQnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50
cy5vcmlnaW5hbCcsICdhJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMub3JpZ2luYWxC
JywgJ2InKTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50cy5zZWNvbmQnLCAndW5kZWZpbmVk
Jyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMudGhpcmQnLCAndW5kZWZpbmVkJyk7CisK
KyAgICBkZWJ1ZygnJyk7CisgICAgZGVidWcoIm5vdyBjaGFuZ2UgdGhlIGZvcm0gaXRlbSBhJ3Mg
bmFtZSB0byBzZWNvbmQiKTsKKyAgICBkZWJ1ZygnJyk7CisKKyAgICBhLm5hbWU9InNlY29uZCI7
CisKKyAgICBzaG91bGRCZSgnZm9ybS5sZW5ndGgnLCAnMicpOworICAgIHNob3VsZEJlKCdmb3Jt
Lm9yaWdpbmFsJywgJ2EnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5vcmlnaW5hbEInLCAnYicpOwor
ICAgIHNob3VsZEJlKCdmb3JtLnNlY29uZCcsICdhJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0udGhp
cmQnLCAndW5kZWZpbmVkJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMub3JpZ2luYWwn
LCAndW5kZWZpbmVkJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMub3JpZ2luYWxCJywg
J2InKTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50cy5zZWNvbmQnLCAnYScpOworICAgIHNo
b3VsZEJlKCdmb3JtLmVsZW1lbnRzLnRoaXJkJywgJ3VuZGVmaW5lZCcpOworCisgICAgZGVidWco
JycpOworICAgIGRlYnVnKCJub3cgY2hhbmdlIHRoZSBmb3JtIGl0ZW0gYSdzIG5hbWUgdG8gdGhp
cmQiKTsKKyAgICBkZWJ1ZygnJyk7CisKKyAgICBhLm5hbWU9InRoaXJkIjsKKworICAgIHNob3Vs
ZEJlKCdmb3JtLmxlbmd0aCcsICcyJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0ub3JpZ2luYWwnLCAn
YScpOworICAgIHNob3VsZEJlKCdmb3JtLm9yaWdpbmFsQicsICdiJyk7CisgICAgc2hvdWxkQmUo
J2Zvcm0uc2Vjb25kJywgJ2EnKTsKKyAgICBzaG91bGRCZSgnZm9ybS50aGlyZCcsICdhJyk7Cisg
ICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMub3JpZ2luYWwnLCAndW5kZWZpbmVkJyk7CisgICAg
c2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMub3JpZ2luYWxCJywgJ2InKTsKKyAgICBzaG91bGRCZSgn
Zm9ybS5lbGVtZW50cy5zZWNvbmQnLCAndW5kZWZpbmVkJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0u
ZWxlbWVudHMudGhpcmQnLCAnYScpOworCisgICAgZGVidWcoJycpOworICAgIGRlYnVnKCJub3cg
Y2hhbmdlIGZvcm0gaXRlbSBiJ3MgbmFtZSB0byBzZWNvbmQiKTsKKyAgICBkZWJ1ZygnJyk7CisK
KyAgICBiLm5hbWU9InNlY29uZCI7CisKKyAgICBzaG91bGRCZSgnZm9ybS5sZW5ndGgnLCAnMicp
OworICAgIHNob3VsZEJlKCdmb3JtLm9yaWdpbmFsJywgJ2EnKTsKKyAgICBzaG91bGRCZSgnZm9y
bS5vcmlnaW5hbEInLCAnYicpOworICAgIHNob3VsZEJlKCdmb3JtLnNlY29uZCcsICdiJyk7Cisg
ICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMub3JpZ2luYWwnLCAndW5kZWZpbmVkJyk7CisgICAg
c2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMub3JpZ2luYWxCJywgJ3VuZGVmaW5lZCcpOworICAgIHNo
b3VsZEJlKCdmb3JtLmVsZW1lbnRzLnNlY29uZCcsICdiJyk7CisKKyAgICBkZWJ1ZygnJyk7Cisg
ICAgZGVidWcoIm5vdyBjaGFuZ2UgYSBmb3JtIGl0ZW0gYidzIG5hbWUgdG8gdGhpcmQiKTsKKyAg
ICBkZWJ1ZygnJyk7CisKKyAgICBmb3JtLm9yaWdpbmFsQi5uYW1lPSJ0aGlyZCI7CisKKyAgICBz
aG91bGRCZSgnZm9ybS5sZW5ndGgnLCAnMicpOworICAgIHNob3VsZEJlKCdmb3JtLm9yaWdpbmFs
JywgJ2EnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5vcmlnaW5hbEInLCAnYicpOworICAgIHNob3Vs
ZEJlKCdmb3JtLnNlY29uZCcsICdiJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0udGhpcmQubGVuZ3Ro
JywgJzInKTsKKyAgICBzaG91bGRCZSgnZm9ybS50aGlyZC5pdGVtKDApJywgJ2EnKTsKKyAgICBz
aG91bGRCZSgnZm9ybS50aGlyZC5pdGVtKDEpJywgJ2InKTsKKyAgICBzaG91bGRCZSgnZm9ybS5l
bGVtZW50cy5vcmlnaW5hbCcsICd1bmRlZmluZWQnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVt
ZW50cy5vcmlnaW5hbEInLCAndW5kZWZpbmVkJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVu
dHMuc2Vjb25kJywgJ3VuZGVmaW5lZCcpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLnRo
aXJkLmxlbmd0aCcsICcyJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMudGhpcmQuaXRl
bSgwKScsICdhJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMudGhpcmQuaXRlbSgxKScs
ICdiJyk7CisKKyAgICBkZWJ1ZygnJyk7CisgICAgZGVidWcoIm5vdyByZW1vdmUgZWxlbWVudCBh
Iik7CisgICAgZGVidWcoJycpOworCisgICAgZm9ybS5yZW1vdmVDaGlsZChhKTsKKworICAgIHNo
b3VsZEJlKCdmb3JtLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0ub3JpZ2luYWwn
LCAnYScpOworICAgIHNob3VsZEJlKCdmb3JtLm9yaWdpbmFsQicsICdiJyk7CisgICAgc2hvdWxk
QmUoJ2Zvcm0uc2Vjb25kJywgJ2InKTsKKyAgICBzaG91bGRCZSgnZm9ybS50aGlyZCcsICdiJyk7
CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMub3JpZ2luYWwnLCAndW5kZWZpbmVkJyk7Cisg
ICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMub3JpZ2luYWxCJywgJ3VuZGVmaW5lZCcpOworICAg
IHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLnNlY29uZCcsICd1bmRlZmluZWQnKTsKKyAgICBzaG91
bGRCZSgnZm9ybS5lbGVtZW50cy50aGlyZCcsICdiJyk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxmb3JtIGlkPSdmb3JtJz4KKzxpbnB1dCB0eXBl
PSdoaWRkZW4nIGlkPSdhJyBuYW1lPSdvcmlnaW5hbCc+Cis8aW5wdXQgdHlwZT0naGlkZGVuJyBp
ZD0nYicgbmFtZT0nb3JpZ2luYWxCJz4KKzwvZm9ybT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29sZC1uYW1lcy5odG1sCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvaHRtbApOYW1lOiBzdm46ZW9sLXN0eWxl
CiAgICsgbmF0aXZlCgpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDk1KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw5MyBAQAorMjAwNy0wMy0wOSAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgLSBmaXggaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1
OTUKKyAgICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDcyMjg2Mz4gUkVHUkVTU0lPTjogQ2FuJ3Qg
YWRkIGl0ZW0gdG8gY2FydCBhdCBsbnQuY29tCisgICAgICAgICAgKEpTIHR5cGUgZXJyb3IpICgx
MjU5NSkKKworICAgICAgICBUZXN0OiBmYXN0L2Zvcm1zL29sZC1uYW1lcy5odG1sCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hUTUxGb3JtRWxlbWVudDo6Y2FuR2V0SXRlbXNGb3JOYW1lKTogSWYgdGhlIGZv
cm0gY29sbGVjdGlvbiBoYXMKKyAgICAgICAgbm90aGluZyBmb3IgYSBnaXZlbiBuYW1lLCB0cnkg
dGhlIGZvcm0ncyBvbGROYW1lZEVsZW1lbnQgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpK
U0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcik6IERpdHRvLgorCisgICAgICAgICogYmluZGlu
Z3MvanMva2pzX2RvbS5oOiBSZW1vdmVkIHRoZSBET01OYW1lZE5vZGVzQ29sbGVjdGlvbi4gSW5z
dGVhZCB3ZSB3aWxsIHVzZQorICAgICAgICBhIGNsYXNzIGRlcml2ZWQgZnJvbSBOb2RlTGlzdC4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9ranNfZG9tLmNwcDogRGl0dG8uCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9ranNfaHRtbC5jcHA6CisgICAgICAgIChLSlM6OlZlY3Rvck5vZGVMaXN0OjpW
ZWN0b3JOb2RlTGlzdCk6IEFkZGVkLiBDb25zdHJ1Y3RvciBmb3IgYSBuZXcgY2xhc3MgZGVyaXZl
ZAorICAgICAgICBmcm9tIE5vZGVMaXN0IHRvIGJlIHVzZWQgZm9yIHRoZSBuYW1lZCBpdGVtcyBy
ZXN1bHQgZnJvbSBhIGNvbGxlY3Rpb24gLS0gdXNlcyBhCisgICAgICAgIHZlY3RvciBvZiBub2Rl
IHBvaW50ZXJzLgorICAgICAgICAoS0pTOjpWZWN0b3JOb2RlTGlzdDo6bGVuZ3RoKTogQWRkZWQu
CisgICAgICAgIChLSlM6OlZlY3Rvck5vZGVMaXN0OjppdGVtKTogQWRkZWQuCisgICAgICAgIChL
SlM6OkpTSFRNTENvbGxlY3Rpb246OmdldE5hbWVkSXRlbXMpOiBVc2UgVmVjdG9yTm9kZUxpc3Qg
YW5kIHRoZSBleGlzdGluZyB3cmFwcGVyCisgICAgICAgIGZvciBOb2RlTGlzdCByYXRoZXIgdGhh
biBhIGN1c3RvbSBKYXZhU2NyaXB0IGNsYXNzLCBET01OYW1lZE5vZGVzQ29sbGVjdGlvbi4KKwor
ICAgICAgICAqIGRvbS9DaGlsZE5vZGVMaXN0Lmg6CisgICAgICAgICogZG9tL0NoaWxkTm9kZUxp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlTGlzdDo6Q2hpbGROb2RlTGlzdCk6
IFVwZGF0ZWQgdG8gZGVyaXZlIGZyb20gVHJlZU5vZGVMaXN0LAorICAgICAgICBzaW5jZSBOb2Rl
TGlzdCBpcyBub3cgYSBzaW1wbGVyIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2Rl
TGlzdDo6ZWxlbWVudE1hdGNoZXMpOiBVcGRhdGVkIGZvciBuYW1lIGFuZCBwYXJhbWV0ZXIgY2hh
bmdlLgorCisgICAgICAgICogZG9tL05hbWVOb2RlTGlzdC5oOgorICAgICAgICAqIGRvbS9OYW1l
Tm9kZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZU5vZGVMaXN0OjpOYW1lTm9kZUxp
c3QpOiBVcGRhdGVkIHRvIGRlcml2ZSBmcm9tIFRyZWVOb2RlTGlzdCwKKyAgICAgICAgc2luY2Ug
Tm9kZUxpc3QgaXMgbm93IGEgc2ltcGxlciBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVO
b2RlTGlzdDo6cm9vdE5vZGVBdHRyaWJ1dGVDaGFuZ2VkKTogVXBkYXRlZCBmb3IgbmFtZSBhbmQK
KyAgICAgICAgcGFyYW1ldGVyIGNoYW5nZS4KKworICAgICAgICAqIGRvbS9Ob2RlLmg6IENoYW5n
ZSByZWdpc3Rlci91bnJlZ2lzdGVyIGZ1bmN0aW9ucyB0byB0YWtlIFRyZWVOb2RlTGlzdC4KKyAg
ICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUYWdOb2RlTGlzdDo6VGFn
Tm9kZUxpc3QpOiBVcGRhdGVkIHRvIGRlcml2ZSBmcm9tIFRyZWVOb2RlTGlzdCwKKyAgICAgICAg
c2luY2UgTm9kZUxpc3QgaXMgbm93IGEgc2ltcGxlciBhYnN0cmFjdCBjbGFzcy4KKyAgICAgICAg
KFdlYkNvcmU6OlRhZ05vZGVMaXN0OjplbGVtZW50TWF0Y2hlcyk6IFVwZGF0ZWQgZm9yIG5hbWUg
YW5kIHBhcmFtZXRlciBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWdpc3Rlck5v
ZGVMaXN0KTogQ2hhbmdlZCB0eXBlIGZyb20gTm9kZUxpc3QgdG8gVHJlZU5vZGVMaXN0LgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6dW5yZWdpc3Rlck5vZGVMaXN0KTogRGl0dG8uCisKKyAgICAg
ICAgKiBkb20vTm9kZUxpc3QuaDogQnJva2UgTm9kZUxpc3QgaW50byBhIHNpbXBsZXIgYmFzZSBj
bGFzcyBhbmQgYSBkZXJpdmVkIGNsYXNzCisgICAgICAgIHdpdGggdGhlIG1hY2hpbmVyeSBmb3Ig
aXRlcmF0aW5nIGEgdHJlZSwgY2FsbGVkIFRyZWVOb2RlTGlzdC4KKyAgICAgICAgKiBkb20vTm9k
ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3Q6On5Ob2RlTGlzdCk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3Q6Oml0ZW1XaXRoTmFtZSk6IEZhY3RvcmVkIG91
dCBvZiB0aGUgb2xkIGl0ZW1XaXRoTmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OlRyZWVOb2RlTGlz
dDo6VHJlZU5vZGVMaXN0KTogUmVuYW1lZCBmcm9tIE5vZGVMaXN0LgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZU5vZGVMaXN0Ojp+VHJlZU5vZGVMaXN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpUcmVlTm9kZUxpc3Q6OnJlY3Vyc2l2ZUxlbmd0aCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZU5vZGVMaXN0OjppdGVtRm9yd2FyZHNGcm9tQ3VycmVudCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6VHJlZU5vZGVMaXN0OjppdGVtQmFja3dhcmRzRnJvbUN1cnJlbnQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlRyZWVOb2RlTGlzdDo6cmVjdXJzaXZlSXRlbSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6VHJlZU5vZGVMaXN0OjppdGVtV2l0aE5hbWUpOiBGYWN0b3Jl
ZCBoYWxmIG9mIHRoaXMgaW50byB0aGlzIGZ1bmN0aW9uLAorICAgICAgICB0aGUgb3RoZXIgaGFs
ZiBpbiBOb2RlTGlzdDo6aXRlbVdpdGhOYW1lLgorICAgICAgICAoV2ViQ29yZTo6VHJlZU5vZGVM
aXN0Ojpyb290Tm9kZUF0dHJpYnV0ZUNoYW5nZWQpOiBBZGRlZC4gTm8gbG9uZ2VyIGlubGluZS4K
KyAgICAgICAgKFdlYkNvcmU6OlRyZWVOb2RlTGlzdDo6cm9vdE5vZGVDaGlsZHJlbkNoYW5nZWQp
OiBSZW5hbWVkIGZyb20gTm9kZUxpc3QuCisKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVu
dC5oOiBBZGRlZCBmb3JtRWxlbWVudE5hbWVDaGFuZ2VkIGFuZCBvbGROYW1lZEVsZW1lbnQKKyAg
ICAgICAgZnVjbnRpb25zLCBhbmQgYSBtYXAgY2FsbGVkIG1fb2xkTmFtZXMuIEFsc28gcmVtb3Zl
ZCBtX2JvdW5kYXJ5LCB3aGljaCBJCisgICAgICAgIHRob3VnaHQgSSBoYWQgYWxyZWFkeSBkb25l
LgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtRWxlbWVudDo6SFRNTEZvcm1FbGVtZW50KTogSW5pdGlhbGl6ZSBtX29sZE5hbWVz
IHRvIDAuCisgICAgICAgIFN3aXRjaGVkIHRoZSByZXN0IG9mIHRoZSBtZW1iZXJzIHRvIGluaXRp
YWxpemF0aW9uIHN5bnRheC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6fkhU
TUxGb3JtRWxlbWVudCk6IERlbGV0ZSBtX29sZE5hbWVzLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudE5hbWVDaGFuZ2VkKTogQWRkZWQuIFN0b3JlcyBhIHJl
ZmVyZW5jZQorICAgICAgICB0byBvbmUgZWxlbWVudCB1bmRlciBlYWNoIG9mIGl0cyBvbGQgbmFt
ZXMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6Om9sZE5hbWVkRWxlbWVudCk6
IEFkZGVkLiBSZXR1cm5zIHRoZSBvbGQgZWxlbWVudAorICAgICAgICB0aGF0IG9uY2UgaGFkIGEg
Z2l2ZW4gbmFtZS4KKworICAgICAgICAqIGh0bWwvSFRNTEdlbmVyaWNGb3JtRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTEdlbmVyaWNGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MR2VuZXJpY0Zvcm1FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IFdoZW4g
dGhlIG5hbWUKKyAgICAgICAgYXR0cmlidXRlIGNoYW5nZXMsIHRlbGwgdGhlIGZvcm0gYWJvdXQg
dGhlIG9sZCBuYW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEdlbmVyaWNGb3JtRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvVHJlZSk6IFdoZW4gdGVsbGluZyBhIGZvcm0KKyAgICAgICAgYWJvdXQgYW4g
ZWxlbWVudCwgYWxzbyBzdG9yZSBhd2F5IHRoZSBvbGQgbmFtZSBzbyB0aGF0IHdlIGNhbiB1c2Ug
aXQKKyAgICAgICAgd2hlbiB0aGUgbmFtZSBjaGFuZ2VzIGxhdGVyLgorCisgICAgICAgICogaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKTogQWRkZWQgYSBjYWxsIHRvIHRoZQorICAgICAgICBi
YXNlIGNsYXNzIGluIHRoZSBuYW1lQXR0ciBjYXNlLCBzbyB0aGUgY29kZSBpbiBIVE1MR2VuZXJp
Y0Zvcm1FbGVtZW50CisgICAgICAgIGFib3ZlIHdpbGwgZ2V0IGNhbGxlZCBpbiB0aGUgaW5wdXQg
ZWxlbWVudCBjYXNlLgorCiAyMDA3LTAzLTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKdXN0aW4uCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjAwOTEpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNiw4ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSlNIVE1MRm9ybUVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEdlbmVyaWNG
b3JtRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogCiB1c2luZyBuYW1l
c3BhY2UgS0pTOwogCkBAIC0zNSwxNyArMzYsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBi
b29sIEpTSFRNTEZvcm1FbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiBleGVj
LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1l
KQogewotICAgIC8vIEZJWE1FOiBpZGVhbGx5IHRoZXJlIHNob3VsZCBiZSBhIGxpZ2h0ZXItd2Vp
Z2h0IHdheSBvZiBkb2luZyB0aGlzCi0gICAgSlNWYWx1ZSogbmFtZWRJdGVtcyA9IEpTSFRNTENv
bGxlY3Rpb24oZXhlYywgZm9ybS0+ZWxlbWVudHMoKS5nZXQoKSkuZ2V0TmFtZWRJdGVtcyhleGVj
LCBwcm9wZXJ0eU5hbWUpOwotICAgIHJldHVybiAhbmFtZWRJdGVtcy0+aXNVbmRlZmluZWQoKTsK
KyAgICBpZiAoIUpTSFRNTENvbGxlY3Rpb24oZXhlYywgZm9ybS0+ZWxlbWVudHMoKS5nZXQoKSku
Z2V0TmFtZWRJdGVtcyhleGVjLCBwcm9wZXJ0eU5hbWUpLT5pc1VuZGVmaW5lZCgpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gISFmb3JtLT5vbGROYW1lZEVsZW1lbnQocHJvcGVy
dHlOYW1lKTsKIH0KIAogSlNWYWx1ZSogSlNIVE1MRm9ybUVsZW1lbnQ6Om5hbWVHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
Y29uc3QgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIEpTSFRNTEVsZW1lbnQqIHRoaXNPYmog
PSBzdGF0aWNfY2FzdDxKU0hUTUxFbGVtZW50Kj4oc2xvdC5zbG90QmFzZSgpKTsKLSAgICBIVE1M
Rm9ybUVsZW1lbnQqIGZvcm0gPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPih0aGlzT2Jq
LT5pbXBsKCkpOwotICAgIAotICAgIHJldHVybiBKU0hUTUxDb2xsZWN0aW9uKGV4ZWMsIGZvcm0t
PmVsZW1lbnRzKCkuZ2V0KCkpLmdldE5hbWVkSXRlbXMoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAg
ICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihz
dGF0aWNfY2FzdDxKU0hUTUxFbGVtZW50Kj4oc2xvdC5zbG90QmFzZSgpKS0+aW1wbCgpKTsKKyAg
ICBKU1ZhbHVlKiBpdGVtcyA9IEpTSFRNTENvbGxlY3Rpb24oZXhlYywgZm9ybS0+ZWxlbWVudHMo
KS5nZXQoKSkuZ2V0TmFtZWRJdGVtcyhleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIGlmICghaXRl
bXMtPmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiBpdGVtczsKKyAgICByZXR1cm4gdG9K
UyhleGVjLCBmb3JtLT5vbGROYW1lZEVsZW1lbnQocHJvcGVydHlOYW1lKSk7CiB9CiAKIH0KSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9ranNfZG9tLmNwcAkocmV2aXNpb24gMjAwOTEpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2pzL2tqc19kb20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTE0LDU5ICsxMTE0LDQg
QEAgSlNPYmplY3QqIGdldERPTUV4Y2VwdGlvbkNvbnN0cnVjdG9yKEV4ZQogICByZXR1cm4gY2Fj
aGVHbG9iYWxPYmplY3Q8RE9NRXhjZXB0aW9uQ29uc3RydWN0b3I+KGV4ZWMsICJbW0RPTUV4Y2Vw
dGlvbi5jb25zdHJ1Y3Rvcl1dIik7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY29uc3Qg
Q2xhc3NJbmZvIERPTU5hbWVkTm9kZXNDb2xsZWN0aW9uOjppbmZvID0geyAiQ29sbGVjdGlvbiIs
IDAsIDAsIDAgfTsKLQotLy8gU3VjaCBhIGNvbGxlY3Rpb24gaXMgdXN1YWxseSB2ZXJ5IHNob3J0
LWxpdmVkLCBpdCBvbmx5IGV4aXN0cwotLy8gZm9yIGNvbnN0cnVjdHMgbGlrZSBkb2N1bWVudC5m
b3Jtcy48bmFtZT5bMV0sCi0vLyBzbyBpdCBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtIHRoYXQgaXQn
cyBzdG9yaW5nIGFsbCB0aGUgbm9kZXMgKHdpdGggdGhlIHNhbWUgbmFtZSkuIChEYXZpZCkKLURP
TU5hbWVkTm9kZXNDb2xsZWN0aW9uOjpET01OYW1lZE5vZGVzQ29sbGVjdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgbm9kZXMpCi0gIDogbV9ub2Rlcyhu
b2RlcykKLXsKLSAgICBzZXRQcm90b3R5cGUoZXhlYy0+bGV4aWNhbEludGVycHJldGVyKCktPmJ1
aWx0aW5PYmplY3RQcm90b3R5cGUoKSk7Ci19Ci0KLUpTVmFsdWUqIERPTU5hbWVkTm9kZXNDb2xs
ZWN0aW9uOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb3JpZ2luYWxP
YmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90
JiBzbG90KQotewotICBET01OYW1lZE5vZGVzQ29sbGVjdGlvbiAqdGhpc09iaiA9IHN0YXRpY19j
YXN0PERPTU5hbWVkTm9kZXNDb2xsZWN0aW9uKj4oc2xvdC5zbG90QmFzZSgpKTsKLSAgcmV0dXJu
IGpzTnVtYmVyKHRoaXNPYmotPm1fbm9kZXMuc2l6ZSgpKTsKLX0KLQotSlNWYWx1ZSogRE9NTmFt
ZWROb2Rlc0NvbGxlY3Rpb246OmluZGV4R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IG9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFBy
b3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgRE9NTmFtZWROb2Rlc0NvbGxlY3Rpb24gKnRoaXNPYmog
PSBzdGF0aWNfY2FzdDxET01OYW1lZE5vZGVzQ29sbGVjdGlvbio+KHNsb3Quc2xvdEJhc2UoKSk7
Ci0gIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNPYmotPm1fbm9kZXNbc2xvdC5pbmRleCgpXS5nZXQo
KSk7Ci19Ci0KLWJvb2wgRE9NTmFtZWROb2Rlc0NvbGxlY3Rpb246OmdldE93blByb3BlcnR5U2xv
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQotewotICBpZiAocHJvcGVydHlOYW1lID09IGxlbmd0aFByb3BlcnR5TmFt
ZSkgewotICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIGxlbmd0aEdldHRlcik7Ci0gICAgcmV0dXJu
IHRydWU7Ci0gIH0KLQotICAvLyBhcnJheSBpbmRleCA/Ci0gIGJvb2wgb2s7Ci0gIHVuc2lnbmVk
IGlkeCA9IHByb3BlcnR5TmFtZS50b1VJbnQzMigmb2spOwotICBpZiAob2sgJiYgaWR4IDwgbV9u
b2Rlcy5zaXplKCkpIHsKLSAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXMsIGlkeCwgaW5kZXhH
ZXR0ZXIpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLy8gRm9yIElFIGNvbXBhdGliaWxp
dHksIHdlIG5lZWQgdG8gYmUgYWJsZSB0byBsb29rIHVwIGVsZW1lbnRzIGluIGEKLSAgLy8gZG9j
dW1lbnQuZm9ybU5hbWUubmFtZSByZXN1bHQgYnkgaWQgYXMgd2VsbCBhcyBiZSBpbmRleC4KLQot
ICBBdG9taWNTdHJpbmcgYXRvbWljUHJvcGVydHlOYW1lID0gcHJvcGVydHlOYW1lOwotICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ub2Rlcy5zaXplKCk7IGkrKykgewotICAgIE5vZGUqIG5v
ZGUgPSBtX25vZGVzW2ldLmdldCgpOwotICAgIGlmIChub2RlLT5oYXNBdHRyaWJ1dGVzKCkgJiYg
bm9kZS0+YXR0cmlidXRlcygpLT5pZCgpID09IGF0b21pY1Byb3BlcnR5TmFtZSkgewotICAgICAg
c2xvdC5zZXRDdXN0b21JbmRleCh0aGlzLCBpLCBpbmRleEdldHRlcik7Ci0gICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gRE9NT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2RvbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMva2pzX2RvbS5oCShyZXZpc2lvbiAyMDA5MSkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
anMva2pzX2RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsMjEgKzE0Miw2IEBAIG5hbWVzcGFj
ZSBLSlMgewogICBKU09iamVjdCogZ2V0Tm9kZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogICBK
U09iamVjdCogZ2V0RE9NRXhjZXB0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7CiAKLSAgLy8g
SW50ZXJuYWwgY2xhc3MsIHVzZWQgZm9yIHRoZSBjb2xsZWN0aW9uIHJldHVybiBieSBlLmcuIGRv
Y3VtZW50LmZvcm1zLm15aW5wdXQKLSAgLy8gd2hlbiBtdWx0aXBsZSBub2RlcyBoYXZlIHRoZSBz
YW1lIG5hbWUuCi0gIGNsYXNzIERPTU5hbWVkTm9kZXNDb2xsZWN0aW9uIDogcHVibGljIERPTU9i
amVjdCB7Ci0gIHB1YmxpYzoKLSAgICBET01OYW1lZE5vZGVzQ29sbGVjdGlvbihFeGVjU3RhdGUg
KmV4ZWMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Tm9kZT4gPiYgbm9kZXMpOwotICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlICosIGNvbnN0IElkZW50
aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0KLSAgICBzdGF0aWMgY29uc3QgQ2xhc3NJ
bmZvIGluZm87Ci1wcml2YXRlOgotICAgIHN0YXRpYyBKU1ZhbHVlICpsZW5ndGhHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCAqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90KTsKLSAgICBzdGF0aWMgSlNWYWx1ZSAqaW5kZXhHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCAqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90
JiBzbG90KTsKLQotICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Tm9kZT4gPiBtX25vZGVzOwot
ICB9OwotCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMva2pzX2h0bWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2h0
bWwuY3BwCShyZXZpc2lvbiAyMDA5MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2h0bWwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsNyBAQAogLy8gLSotIGMtYmFzaWMtb2Zmc2V0
OiA0IC0qLQogLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxpYnJhcmllcwog
ICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcp
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTY5LDYgKzY4LDE3IEBA
IHVzaW5nIG5hbWVzcGFjZSBFdmVudE5hbWVzOwogCiBuYW1lc3BhY2UgS0pTIHsKIAorY2xhc3Mg
VmVjdG9yTm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QgeworcHVibGljOgorICAgIFZlY3Rvck5v
ZGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgbm9kZXMpIDogbV9ub2Rlcyhub2Rl
cykgeyB9CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
bm9kZXMuc2l6ZSgpOyB9CisgICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBj
b25zdCB7IHJldHVybiBpbmRleCA8IG1fbm9kZXMuc2l6ZSgpID8gbV9ub2Rlc1tpbmRleF0uZ2V0
KCkgOiAwOyB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG1fbm9kZXM7
Cit9OworCiBjbGFzcyBIVE1MRWxlbWVudEZ1bmN0aW9uIDogcHVibGljIEludGVybmFsRnVuY3Rp
b25JbXAgewogcHVibGljOgogICBIVE1MRWxlbWVudEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
aW50IGksIGludCBsZW4sIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwpAQCAtMTU1MCw3ICsxNTYw
LDcgQEAgSlNWYWx1ZSAqSlNIVE1MQ29sbGVjdGlvbjo6Z2V0TmFtZWRJdGVtcwogICAgIGlmIChu
YW1lZEl0ZW1zLnNpemUoKSA9PSAxKQogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBuYW1lZEl0
ZW1zWzBdLmdldCgpKTsKIAotICAgIHJldHVybiBuZXcgRE9NTmFtZWROb2Rlc0NvbGxlY3Rpb24o
ZXhlYywgbmFtZWRJdGVtcyk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgbmV3IFZlY3Rvck5vZGVM
aXN0KG5hbWVkSXRlbXMpKTsKIH0KIAogSlNWYWx1ZSogSlNIVE1MQ29sbGVjdGlvblByb3RvdHlw
ZUZ1bmN0aW9uOjpjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlz
T2JqLCBjb25zdCBMaXN0ICZhcmdzKQpJbmRleDogV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5jcHAJKHJldmlzaW9u
IDIwMDkxKQorKysgV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDE0ICsyNCwxNSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2hp
bGROb2RlTGlzdC5oIgotI2luY2x1ZGUgIk5vZGUuaCIKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2hp
bGROb2RlTGlzdDo6Q2hpbGROb2RlTGlzdCggTm9kZSAqbiApCi0gICAgOiBOb2RlTGlzdChuKQor
Q2hpbGROb2RlTGlzdDo6Q2hpbGROb2RlTGlzdChOb2RlKiBuKQorICAgIDogVHJlZU5vZGVMaXN0
KG4pCiB7CiB9CiAKQEAgLTQxLDggKzQyLDcgQEAgdW5zaWduZWQgQ2hpbGROb2RlTGlzdDo6bGVu
Z3RoKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGNhY2hlZExlbmd0aDsKIAogICAgIHVuc2lnbmVk
IGxlbiA9IDA7Ci0gICAgTm9kZSAqbjsKLSAgICBmb3IobiA9IHJvb3ROb2RlLT5maXJzdENoaWxk
KCk7IG4gIT0gMDsgbiA9IG4tPm5leHRTaWJsaW5nKCkpCisgICAgZm9yIChOb2RlKiBuID0gcm9v
dE5vZGUtPmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGxl
bisrOwogCiAgICAgY2FjaGVkTGVuZ3RoID0gbGVuOwpAQCAtNTEsMTAgKzUxLDEwIEBAIHVuc2ln
bmVkIENoaWxkTm9kZUxpc3Q6Omxlbmd0aCgpIGNvbnN0CiAgICAgcmV0dXJuIGxlbjsKIH0KIAot
Tm9kZSAqQ2hpbGROb2RlTGlzdDo6aXRlbSAoIHVuc2lnbmVkIGluZGV4ICkgY29uc3QKK05vZGUg
KkNoaWxkTm9kZUxpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7CiAgICAgdW5zaWdu
ZWQgaW50IHBvcyA9IDA7Ci0gICAgTm9kZSAqbiA9IHJvb3ROb2RlLT5maXJzdENoaWxkKCk7Cisg
ICAgTm9kZSogbiA9IHJvb3ROb2RlLT5maXJzdENoaWxkKCk7CiAKICAgICBpZiAoaXNJdGVtQ2Fj
aGVWYWxpZCkgewogICAgICAgICBpZiAoaW5kZXggPT0gbGFzdEl0ZW1PZmZzZXQpIHsKQEAgLTgw
LDkgKzgwLDkgQEAgTm9kZSAqQ2hpbGROb2RlTGlzdDo6aXRlbSAoIHVuc2lnbmVkIGluZAogICAg
IHJldHVybiAwOwogfQogCi1ib29sIENoaWxkTm9kZUxpc3Q6Om5vZGVNYXRjaGVzKE5vZGUgKnRl
c3ROb2RlKSBjb25zdAorYm9vbCBDaGlsZE5vZGVMaXN0OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50
KiBlbGVtZW50KSBjb25zdAogewotICAgIHJldHVybiB0ZXN0Tm9kZS0+cGFyZW50Tm9kZSgpID09
IHJvb3ROb2RlOworICAgIHJldHVybiBlbGVtZW50LT5wYXJlbnROb2RlKCkgPT0gcm9vdE5vZGU7
CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmgJKHJldmlzaW9uIDIwMDkxKQorKysgV2ViQ29y
ZS9kb20vQ2hpbGROb2RlTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ2hpbGROb2RlTGlzdCA6IHB1YmxpYyBOb2Rl
TGlzdCB7CitjbGFzcyBDaGlsZE5vZGVMaXN0IDogcHVibGljIFRyZWVOb2RlTGlzdCB7CiBwdWJs
aWM6CiAgICAgQ2hpbGROb2RlTGlzdChOb2RlKik7CiAKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAKIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoTm9kZSogdGVzdE5vZGUpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50KikgY29uc3Q7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5jcHAJKHJldmlzaW9u
IDIwMDkxKQorKysgV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsMTQgKzI4LDEzIEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1OYW1lTm9kZUxpc3Q6Ok5hbWVOb2Rl
TGlzdChOb2RlICpuLCBjb25zdCBTdHJpbmcgJnQpCi0gIDogTm9kZUxpc3QobiksIG5vZGVOYW1l
KHQpCitOYW1lTm9kZUxpc3Q6Ok5hbWVOb2RlTGlzdChOb2RlKiBuLCBjb25zdCBTdHJpbmcgJnQp
CisgICAgOiBUcmVlTm9kZUxpc3QobikKKyAgICAsIG5vZGVOYW1lKHQpCiB7CiB9CiAKQEAgLTQ0
LDE0ICs0MywxNCBAQCB1bnNpZ25lZCBOYW1lTm9kZUxpc3Q6Omxlbmd0aCgpIGNvbnN0CiAgICAg
cmV0dXJuIHJlY3Vyc2l2ZUxlbmd0aCgpOwogfQogCi1Ob2RlICpOYW1lTm9kZUxpc3Q6Oml0ZW0g
KHVuc2lnbmVkIGluZGV4KSBjb25zdAorTm9kZSAqTmFtZU5vZGVMaXN0OjppdGVtKHVuc2lnbmVk
IGluZGV4KSBjb25zdAogewogICAgIHJldHVybiByZWN1cnNpdmVJdGVtKGluZGV4KTsKIH0KIAot
Ym9vbCBOYW1lTm9kZUxpc3Q6Om5vZGVNYXRjaGVzKE5vZGUgKnRlc3ROb2RlKSBjb25zdAorYm9v
bCBOYW1lTm9kZUxpc3Q6OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQqPih0ZXN0Tm9kZSktPmdldEF0dHJpYnV0
ZShuYW1lQXR0cikgPT0gbm9kZU5hbWU7CisgICAgcmV0dXJuIGVsZW1lbnQtPmdldEF0dHJpYnV0
ZShuYW1lQXR0cikgPT0gbm9kZU5hbWU7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvZG9tL05hbWVO
b2RlTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5oCShyZXZp
c2lvbiAyMDA5MSkKKysrIFdlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8qKgogICogTm9kZUxpc3Qg
d2hpY2ggbGlzdHMgYWxsIE5vZGVzIGluIGEgRWxlbWVudCB3aXRoIGEgZ2l2ZW4gIm5hbWU9IiB0
YWcKICAqLwotY2xhc3MgTmFtZU5vZGVMaXN0IDogcHVibGljIE5vZGVMaXN0IHsKK2NsYXNzIE5h
bWVOb2RlTGlzdCA6IHB1YmxpYyBUcmVlTm9kZUxpc3QgewogcHVibGljOgogICAgIE5hbWVOb2Rl
TGlzdChOb2RlKiBkb2MsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKQEAgLTQ0LDEwICs0NCwxMCBA
QCBwdWJsaWM6CiAKICAgICAvLyBPdGhlciBtZXRob2RzIChub3QgcGFydCBvZiBET00pCiAgICAg
dmlydHVhbCB2b2lkIHJvb3ROb2RlQ2hpbGRyZW5DaGFuZ2VkKCkgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIHJvb3ROb2RlQXR0cmlidXRlQ2hhbmdlZCgpIHsgTm9kZUxpc3Q6OnJvb3ROb2RlQ2hpbGRy
ZW5DaGFuZ2VkKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcm9vdE5vZGVBdHRyaWJ1dGVDaGFuZ2Vk
KCkgeyBUcmVlTm9kZUxpc3Q6OnJvb3ROb2RlQ2hpbGRyZW5DaGFuZ2VkKCk7IH0KIAogcHJvdGVj
dGVkOgotICAgIHZpcnR1YWwgYm9vbCBub2RlTWF0Y2hlcyhOb2RlKiB0ZXN0Tm9kZSkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQqKSBjb25zdDsKIAogICAg
IFN0cmluZyBub2RlTmFtZTsKIH07CkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMjAwOTEpCisrKyBXZWJDb3Jl
L2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMjYgKzUwLDIyIEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAvKioKICAqIE5vZGVMaXN0IHdoaWNoIGxpc3RzIGFsbCBOb2Rl
cyBpbiBhIGRvY3VtZW50IHdpdGggYSBnaXZlbiB0YWcgbmFtZQogICovCi1jbGFzcyBUYWdOb2Rl
TGlzdCA6IHB1YmxpYyBOb2RlTGlzdAoteworY2xhc3MgVGFnTm9kZUxpc3QgOiBwdWJsaWMgVHJl
ZU5vZGVMaXN0IHsKIHB1YmxpYzoKLSAgICBUYWdOb2RlTGlzdChOb2RlICpuLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpOwor
ICAgIFRhZ05vZGVMaXN0KE5vZGUqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpOwogCi0gICAgLy8gRE9NIG1ldGhvZHMgb3Zl
cnJpZGRlbiBmcm9tICBwYXJlbnQgY2xhc3NlcwogICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBOb2RlICppdGVtICh1bnNpZ25lZCBpbmRleCkgY29uc3Q7
Ci0KLSAgICAvLyBPdGhlciBtZXRob2RzIChub3QgcGFydCBvZiBET00pCisgICAgdmlydHVhbCBO
b2RlICppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1
YWwgYm9vbCBub2RlTWF0Y2hlcyhOb2RlICp0ZXN0Tm9kZSkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQqKSBjb25zdDsKIAogICAgIEF0b21pY1N0cmluZyBt
X25hbWVzcGFjZVVSSTsKICAgICBBdG9taWNTdHJpbmcgbV9sb2NhbE5hbWU7CiB9OwogCiBUYWdO
b2RlTGlzdDo6VGFnTm9kZUxpc3QoTm9kZSAqbiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3Bh
Y2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQotICAgIDogTm9kZUxpc3Qobiks
IAorICAgIDogVHJlZU5vZGVMaXN0KG4pLCAKICAgICAgIG1fbmFtZXNwYWNlVVJJKG5hbWVzcGFj
ZVVSSSksIAogICAgICAgbV9sb2NhbE5hbWUobG9jYWxOYW1lKQogewpAQCAtODUsMTEgKzgxLDgg
QEAgTm9kZSAqVGFnTm9kZUxpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIAogICAgIHJldHVybiBy
ZWN1cnNpdmVJdGVtKGluZGV4KTsKIH0KIAotYm9vbCBUYWdOb2RlTGlzdDo6bm9kZU1hdGNoZXMo
Tm9kZSAqdGVzdE5vZGUpIGNvbnN0Citib29sIFRhZ05vZGVMaXN0OjplbGVtZW50TWF0Y2hlcyhF
bGVtZW50KiB0ZXN0Tm9kZSkgY29uc3QKIHsKLSAgICBpZiAoIXRlc3ROb2RlLT5pc0VsZW1lbnRO
b2RlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIGlmIChtX25hbWVzcGFjZVVSSSAh
PSBzdGFyQXRvbSAmJiBtX25hbWVzcGFjZVVSSSAhPSB0ZXN0Tm9kZS0+bmFtZXNwYWNlVVJJKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTQyNywxNCArNDIwLDE0IEBAIHVuc2ln
bmVkIE5vZGU6Om5vZGVJbmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIGNvdW50OwogfQogCi12b2lk
IE5vZGU6OnJlZ2lzdGVyTm9kZUxpc3QoTm9kZUxpc3QqIGxpc3QpCit2b2lkIE5vZGU6OnJlZ2lz
dGVyTm9kZUxpc3QoVHJlZU5vZGVMaXN0KiBsaXN0KQogewogICAgIGlmICghbV9ub2RlTGlzdHMp
CiAgICAgICAgIG1fbm9kZUxpc3RzID0gbmV3IE5vZGVMaXN0U2V0OwogICAgIG1fbm9kZUxpc3Rz
LT5hZGQobGlzdCk7CiB9CiAKLXZvaWQgTm9kZTo6dW5yZWdpc3Rlck5vZGVMaXN0KE5vZGVMaXN0
KiBsaXN0KQordm9pZCBOb2RlOjp1bnJlZ2lzdGVyTm9kZUxpc3QoVHJlZU5vZGVMaXN0KiBsaXN0
KQogewogICAgIGlmICghbV9ub2RlTGlzdHMpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYkNv
cmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9u
IDIwMDkxKQorKysgV2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1
NCw3IEBAIGNsYXNzIFJlbmRlckFyZW5hOwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVu
ZGVyU3R5bGU7CiBjbGFzcyBUZXh0U3RyZWFtOworY2xhc3MgVHJlZU5vZGVMaXN0OwogCiB0eXBl
ZGVmIGludCBFeGNlcHRpb25Db2RlOwogCkBAIC00MzksOCArNDQwLDggQEAgcHVibGljOgogICAg
IHZvaWQgc2hvd1RyZWVBbmRNYXJrKGNvbnN0IE5vZGUqIG1hcmtlZE5vZGUxLCBjb25zdCBjaGFy
KiBtYXJrZWRMYWJlbDEsIGNvbnN0IE5vZGUqIG1hcmtlZE5vZGUyID0gMCwgY29uc3QgY2hhciog
bWFya2VkTGFiZWwyID0gMCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIHZvaWQgcmVnaXN0ZXJOb2Rl
TGlzdChOb2RlTGlzdCopOwotICAgIHZvaWQgdW5yZWdpc3Rlck5vZGVMaXN0KE5vZGVMaXN0Kik7
CisgICAgdm9pZCByZWdpc3Rlck5vZGVMaXN0KFRyZWVOb2RlTGlzdCopOworICAgIHZvaWQgdW5y
ZWdpc3Rlck5vZGVMaXN0KFRyZWVOb2RlTGlzdCopOwogICAgIHZvaWQgbm90aWZ5Tm9kZUxpc3Rz
Q2hpbGRyZW5DaGFuZ2VkKCk7CiAgICAgdm9pZCBub3RpZnlMb2NhbE5vZGVMaXN0c0NoaWxkcmVu
Q2hhbmdlZCgpOwogICAgIHZvaWQgbm90aWZ5Tm9kZUxpc3RzQXR0cmlidXRlQ2hhbmdlZCgpOwpA
QCAtNDU2LDcgKzQ1Nyw3IEBAIHByaXZhdGU6IC8vIG1lbWJlcnMKICAgICBSZW5kZXJPYmplY3Qq
IG1fcmVuZGVyZXI7CiAKIHByb3RlY3RlZDoKLSAgICB0eXBlZGVmIEhhc2hTZXQ8Tm9kZUxpc3Qq
PiBOb2RlTGlzdFNldDsKKyAgICB0eXBlZGVmIEhhc2hTZXQ8VHJlZU5vZGVMaXN0Kj4gTm9kZUxp
c3RTZXQ7CiAgICAgTm9kZUxpc3RTZXQqIG1fbm9kZUxpc3RzOwogCiAgICAgc2hvcnQgbV90YWJJ
bmRleDsKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9Ob2RlTGlzdC5jcHAJKHJldmlzaW9uIDIwMDkxKQorKysgV2ViQ29yZS9kb20vTm9k
ZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDggQEAKIC8qKgotICogVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgotICoKICAqIENv
cHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAg
IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAg
IChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0zMCw3ICsyOCwyMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5vZGVM
aXN0OjpOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IF9yb290Tm9kZSkKK05vZGVMaXN0Ojp+Tm9k
ZUxpc3QoKQoreworfQorCitOb2RlKiBOb2RlTGlzdDo6aXRlbVdpdGhOYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBsID0gbGVuZ3RoKCk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGw7IGkrKykgeworICAgICAgICBOb2RlKiBub2RlID0g
aXRlbShpKTsKKyAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiBzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4obm9kZSktPmdldElEQXR0cmlidXRlKCkgPT0gbmFtZSkKKyAgICAgICAgICAg
IHJldHVybiBub2RlOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworVHJlZU5vZGVMaXN0OjpU
cmVlTm9kZUxpc3QoUGFzc1JlZlB0cjxOb2RlPiBfcm9vdE5vZGUpCiAgICAgOiByb290Tm9kZShf
cm9vdE5vZGUpLAogICAgICAgaXNMZW5ndGhDYWNoZVZhbGlkKGZhbHNlKSwKICAgICAgIGlzSXRl
bUNhY2hlVmFsaWQoZmFsc2UpCkBAIC0zOCwxMiArNTEsMTIgQEAgTm9kZUxpc3Q6Ok5vZGVMaXN0
KFBhc3NSZWZQdHI8Tm9kZT4gX3JvbwogICAgIHJvb3ROb2RlLT5yZWdpc3Rlck5vZGVMaXN0KHRo
aXMpOwogfSAgICAKIAotTm9kZUxpc3Q6On5Ob2RlTGlzdCgpCitUcmVlTm9kZUxpc3Q6On5UcmVl
Tm9kZUxpc3QoKQogewogICAgIHJvb3ROb2RlLT51bnJlZ2lzdGVyTm9kZUxpc3QodGhpcyk7CiB9
CiAKLXVuc2lnbmVkIE5vZGVMaXN0OjpyZWN1cnNpdmVMZW5ndGgoTm9kZSogc3RhcnQpIGNvbnN0
Cit1bnNpZ25lZCBUcmVlTm9kZUxpc3Q6OnJlY3Vyc2l2ZUxlbmd0aChOb2RlKiBzdGFydCkgY29u
c3QKIHsKICAgICBpZiAoIXN0YXJ0KQogICAgICAgICBzdGFydCA9IHJvb3ROb2RlLmdldCgpOwpA
QCAtNTUsOCArNjgsNyBAQCB1bnNpZ25lZCBOb2RlTGlzdDo6cmVjdXJzaXZlTGVuZ3RoKE5vZGUq
CiAKICAgICBmb3IgKE5vZGUqIG4gPSBzdGFydC0+Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4
dFNpYmxpbmcoKSkKICAgICAgICAgaWYgKG4tPmlzRWxlbWVudE5vZGUoKSkgewotICAgICAgICAg
ICAgaWYgKG5vZGVNYXRjaGVzKG4pKQotICAgICAgICAgICAgICAgIGxlbisrOworICAgICAgICAg
ICAgbGVuICs9IGVsZW1lbnRNYXRjaGVzKHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKSk7CiAgICAg
ICAgICAgICBsZW4gKz0gcmVjdXJzaXZlTGVuZ3RoKG4pOwogICAgICAgICB9CiAKQEAgLTY4LDEz
ICs4MCwxMyBAQCB1bnNpZ25lZCBOb2RlTGlzdDo6cmVjdXJzaXZlTGVuZ3RoKE5vZGUqCiAgICAg
cmV0dXJuIGxlbjsKIH0KIAotTm9kZSogTm9kZUxpc3Q6Oml0ZW1Gb3J3YXJkc0Zyb21DdXJyZW50
KE5vZGUqIHN0YXJ0LCB1bnNpZ25lZCBvZmZzZXQsIGludCByZW1haW5pbmdPZmZzZXQpIGNvbnN0
CitOb2RlKiBUcmVlTm9kZUxpc3Q6Oml0ZW1Gb3J3YXJkc0Zyb21DdXJyZW50KE5vZGUqIHN0YXJ0
LCB1bnNpZ25lZCBvZmZzZXQsIGludCByZW1haW5pbmdPZmZzZXQpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKHJlbWFpbmluZ09mZnNldCA+PSAwKTsKIAogICAgIGZvciAoTm9kZSAqbiA9IHN0YXJ0OyBu
OyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShyb290Tm9kZS5nZXQoKSkpIHsKICAgICAgICAgaWYg
KG4tPmlzRWxlbWVudE5vZGUoKSkgewotICAgICAgICAgICAgaWYgKG5vZGVNYXRjaGVzKG4pKSB7
CisgICAgICAgICAgICBpZiAoZWxlbWVudE1hdGNoZXMoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4p
KSkgewogICAgICAgICAgICAgICAgIGlmICghcmVtYWluaW5nT2Zmc2V0KSB7CiAgICAgICAgICAg
ICAgICAgICAgIGxhc3RJdGVtID0gbjsKICAgICAgICAgICAgICAgICAgICAgbGFzdEl0ZW1PZmZz
ZXQgPSBvZmZzZXQ7CkBAIC04OSwxMiArMTAxLDEyIEBAIE5vZGUqIE5vZGVMaXN0OjppdGVtRm9y
d2FyZHNGcm9tQ3VycmVudCgKICAgICByZXR1cm4gMDsgLy8gbm8gbWF0Y2hpbmcgbm9kZSBpbiB0
aGlzIHN1YnRyZWUKIH0KIAotTm9kZSogTm9kZUxpc3Q6Oml0ZW1CYWNrd2FyZHNGcm9tQ3VycmVu
dChOb2RlKiBzdGFydCwgdW5zaWduZWQgb2Zmc2V0LCBpbnQgcmVtYWluaW5nT2Zmc2V0KSBjb25z
dAorTm9kZSogVHJlZU5vZGVMaXN0OjppdGVtQmFja3dhcmRzRnJvbUN1cnJlbnQoTm9kZSogc3Rh
cnQsIHVuc2lnbmVkIG9mZnNldCwgaW50IHJlbWFpbmluZ09mZnNldCkgY29uc3QKIHsKICAgICBB
U1NFUlQocmVtYWluaW5nT2Zmc2V0IDwgMCk7CiAgICAgZm9yIChOb2RlICpuID0gc3RhcnQ7IG47
IG4gPSBuLT50cmF2ZXJzZVByZXZpb3VzTm9kZShyb290Tm9kZS5nZXQoKSkpIHsKICAgICAgICAg
aWYgKG4tPmlzRWxlbWVudE5vZGUoKSkgewotICAgICAgICAgICAgaWYgKG5vZGVNYXRjaGVzKG4p
KSB7CisgICAgICAgICAgICBpZiAoZWxlbWVudE1hdGNoZXMoc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KG4pKSkgewogICAgICAgICAgICAgICAgIGlmICghcmVtYWluaW5nT2Zmc2V0KSB7CiAgICAgICAg
ICAgICAgICAgICAgIGxhc3RJdGVtID0gbjsKICAgICAgICAgICAgICAgICAgICAgbGFzdEl0ZW1P
ZmZzZXQgPSBvZmZzZXQ7CkBAIC0xMDksNyArMTIxLDcgQEAgTm9kZSogTm9kZUxpc3Q6Oml0ZW1C
YWNrd2FyZHNGcm9tQ3VycmVudAogICAgIHJldHVybiAwOyAvLyBubyBtYXRjaGluZyBub2RlIGlu
IHRoaXMgc3VidHJlZQogfQogCi1Ob2RlKiBOb2RlTGlzdDo6cmVjdXJzaXZlSXRlbSh1bnNpZ25l
ZCBvZmZzZXQsIE5vZGUqIHN0YXJ0KSBjb25zdAorTm9kZSogVHJlZU5vZGVMaXN0OjpyZWN1cnNp
dmVJdGVtKHVuc2lnbmVkIG9mZnNldCwgTm9kZSogc3RhcnQpIGNvbnN0CiB7CiAgICAgaW50IHJl
bWFpbmluZ09mZnNldCA9IG9mZnNldDsKICAgICBpZiAoIXN0YXJ0KSB7CkBAIC0xMzAsMTIgKzE0
MiwxMSBAQCBOb2RlKiBOb2RlTGlzdDo6cmVjdXJzaXZlSXRlbSh1bnNpZ25lZCBvCiAgICAgICAg
IHJldHVybiBpdGVtRm9yd2FyZHNGcm9tQ3VycmVudChzdGFydCwgb2Zmc2V0LCByZW1haW5pbmdP
ZmZzZXQpOwogfQogCi1Ob2RlKiBOb2RlTGlzdDo6aXRlbVdpdGhOYW1lKGNvbnN0IEF0b21pY1N0
cmluZyYgZWxlbWVudElkKSBjb25zdAorTm9kZSogVHJlZU5vZGVMaXN0OjppdGVtV2l0aE5hbWUo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIGlmIChyb290Tm9kZS0+aXNE
b2N1bWVudE5vZGUoKSB8fCByb290Tm9kZS0+aW5Eb2N1bWVudCgpKSB7Ci0gICAgICAgIE5vZGUq
IG5vZGUgPSByb290Tm9kZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsK
LQotICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGVNYXRjaGVzKG5vZGUpKQorICAgICAgICBFbGVt
ZW50KiBub2RlID0gcm9vdE5vZGUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKG5hbWUpOwor
ICAgICAgICBpZiAoIW5vZGUgfHwgIWVsZW1lbnRNYXRjaGVzKG5vZGUpKQogICAgICAgICAgICAg
cmV0dXJuIDA7CiAKICAgICAgICAgZm9yIChOb2RlKiBwID0gbm9kZS0+cGFyZW50Tm9kZSgpOyBw
OyBwID0gcC0+cGFyZW50Tm9kZSgpKQpAQCAtMTQ1LDE3ICsxNTYsMTQgQEAgTm9kZSogTm9kZUxp
c3Q6Oml0ZW1XaXRoTmFtZShjb25zdCBBdG9taQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
LSAgICB1bnNpZ25lZCBsID0gbGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGw7IGkrKykgewotICAgICAgICBOb2RlKiBub2RlID0gaXRlbShpKTsKLSAgICAgICAgaWYgKG5v
ZGUtPmlzRWxlbWVudE5vZGUoKSAmJiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSktPmdldElE
QXR0cmlidXRlKCkgPT0gZWxlbWVudElkKQotICAgICAgICAgICAgcmV0dXJuIG5vZGU7Ci0gICAg
fQorICAgIHJldHVybiBOb2RlTGlzdDo6aXRlbVdpdGhOYW1lKG5hbWUpOworfQogCi0gICAgcmV0
dXJuIDA7Cit2b2lkIFRyZWVOb2RlTGlzdDo6cm9vdE5vZGVBdHRyaWJ1dGVDaGFuZ2VkKCkKK3sK
IH0KIAotdm9pZCBOb2RlTGlzdDo6cm9vdE5vZGVDaGlsZHJlbkNoYW5nZWQoKQordm9pZCBUcmVl
Tm9kZUxpc3Q6OnJvb3ROb2RlQ2hpbGRyZW5DaGFuZ2VkKCkKIHsKICAgICBpc0xlbmd0aENhY2hl
VmFsaWQgPSBmYWxzZTsKICAgICBpc0l0ZW1DYWNoZVZhbGlkID0gZmFsc2U7ICAgICAKSW5kZXg6
IFdlYkNvcmUvZG9tL05vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZUxp
c3QuaAkocmV2aXNpb24gMjAwOTEpCisrKyBXZWJDb3JlL2RvbS9Ob2RlTGlzdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDEwICsxLDggQEAKIC8qCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
RE9NIGltcGxlbWVudGF0aW9uIGZvciBLREUuCi0gKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExh
cnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29p
dmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVs
bGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUg
Q29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMzLDI3ICsz
MSwzNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdG9taWNTdHJpbmc7CitjbGFz
cyBFbGVtZW50OwogY2xhc3MgTm9kZTsKIAogY2xhc3MgTm9kZUxpc3QgOiBwdWJsaWMgU2hhcmVk
PE5vZGVMaXN0PiB7CiBwdWJsaWM6Ci0gICAgTm9kZUxpc3QoUGFzc1JlZlB0cjxOb2RlPiByb290
Tm9kZSk7CiAgICAgdmlydHVhbCB+Tm9kZUxpc3QoKTsKIAotICAgIC8vIERPTSBtZXRob2RzICYg
YXR0cmlidXRlcyBmb3IgTm9kZUxpc3QKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0ID0g
MDsKLSAgICBOb2RlKiBpdGVtV2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7Cisg
ICAgdmlydHVhbCBOb2RlKiBpdGVtV2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7
Cit9OworCisvLyBGSVhNRTogTW92ZSB0aGlzIHRvIGl0cyBvd24gc291cmNlIGZpbGUuCitjbGFz
cyBUcmVlTm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QgeworcHVibGljOgorICAgIFRyZWVOb2Rl
TGlzdChQYXNzUmVmUHRyPE5vZGU+IHJvb3ROb2RlKTsKKyAgICB2aXJ0dWFsIH5UcmVlTm9kZUxp
c3QoKTsKKworICAgIHZpcnR1YWwgTm9kZSogaXRlbVdpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmlu
ZyYpIGNvbnN0OwogCi0gICAgLy8gT3RoZXIgbWV0aG9kcyAobm90IHBhcnQgb2YgRE9NKQogICAg
IHZpcnR1YWwgdm9pZCByb290Tm9kZUNoaWxkcmVuQ2hhbmdlZCgpOwotICAgIHZpcnR1YWwgdm9p
ZCByb290Tm9kZUF0dHJpYnV0ZUNoYW5nZWQoKSB7fQorICAgIHZpcnR1YWwgdm9pZCByb290Tm9k
ZUF0dHJpYnV0ZUNoYW5nZWQoKTsKIAogcHJvdGVjdGVkOgotICAgIC8vIGhlbHBlciBmdW5jdGlv
bnMgZm9yIHNlYXJjaGluZyBhbGwgRWxlbWVudEltcGxzIGluIGEgdHJlZQorICAgIC8vIGhlbHBl
ciBmdW5jdGlvbnMgZm9yIHNlYXJjaGluZyBhbGwgZWxlbWVudHMgaW4gYSB0cmVlCiAgICAgdW5z
aWduZWQgcmVjdXJzaXZlTGVuZ3RoKE5vZGUqIHN0YXJ0ID0gMCkgY29uc3Q7Ci0gICAgTm9kZSog
cmVjdXJzaXZlSXRlbSAodW5zaWduZWQgb2Zmc2V0LCBOb2RlKiBzdGFydCA9IDApIGNvbnN0Owot
ICAgIHZpcnR1YWwgYm9vbCBub2RlTWF0Y2hlcyhOb2RlKiB0ZXN0Tm9kZSkgY29uc3QgPSAwOwor
ICAgIE5vZGUqIHJlY3Vyc2l2ZUl0ZW0odW5zaWduZWQgb2Zmc2V0LCBOb2RlKiBzdGFydCA9IDAp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50KikgY29uc3Qg
PSAwOwogCiAgICAgUmVmUHRyPE5vZGU+IHJvb3ROb2RlOwogICAgIG11dGFibGUgaW50IGNhY2hl
ZExlbmd0aDsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDA5MSkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OSwyMSArNDksMjMgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogSFRNTEZvcm1FbGVt
ZW50OjpIVE1MRm9ybUVsZW1lbnQoRG9jdW1lbnQqIGRvYykKICAgICA6IEhUTUxFbGVtZW50KGZv
cm1UYWcsIGRvYykKKyAgICAsIG1fb2xkTmFtZXMoMCkKKyAgICAsIGNvbGxlY3Rpb25JbmZvKDAp
CisgICAgLCBtX2VuY3R5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpCisg
ICAgLCBtX3Bvc3QoZmFsc2UpCisgICAgLCBtX211bHRpcGFydChmYWxzZSkKKyAgICAsIG1fYXV0
b2NvbXBsZXRlKGZhbHNlKQorICAgICwgbV9pbnN1Ym1pdChmYWxzZSkKKyAgICAsIG1fZG9pbmdz
dWJtaXQoZmFsc2UpCisgICAgLCBtX2lucmVzZXQoZmFsc2UpCisgICAgLCBtX21hbGZvcm1lZChm
YWxzZSkKKyAgICAsIG1fcHJlc2VydmVBY3Jvc3NSZW1vdmUoZmFsc2UpCiB7Ci0gICAgY29sbGVj
dGlvbkluZm8gPSAwOwotICAgIG1fcG9zdCA9IGZhbHNlOwotICAgIG1fbXVsdGlwYXJ0ID0gZmFs
c2U7Ci0gICAgbV9hdXRvY29tcGxldGUgPSB0cnVlOwotICAgIG1faW5zdWJtaXQgPSBmYWxzZTsK
LSAgICBtX2RvaW5nc3VibWl0ID0gZmFsc2U7Ci0gICAgbV9pbnJlc2V0ID0gZmFsc2U7Ci0gICAg
bV9lbmN0eXBlID0gImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCI7Ci0gICAgbV9t
YWxmb3JtZWQgPSBmYWxzZTsKLSAgICBtX3ByZXNlcnZlQWNyb3NzUmVtb3ZlID0gZmFsc2U7CiB9
CiAKIEhUTUxGb3JtRWxlbWVudDo6fkhUTUxGb3JtRWxlbWVudCgpCiB7CisgICAgZGVsZXRlIG1f
b2xkTmFtZXM7CiAgICAgZGVsZXRlIGNvbGxlY3Rpb25JbmZvOwogICAgIAogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBmb3JtRWxlbWVudHMuc2l6ZSgpOyArK2kpCkBAIC0yNzIsMTkgKzI3
NCwxOSBAQCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBIVE1MRm9ybUVsZW1lbnQ6OmZvCiAgICAgICAg
ICAgICAgICAgICAgIC8vIGluY2x1ZGUgdGhlIGZpbGVuYW1lCiAgICAgICAgICAgICAgICAgICAg
IGlmIChjdXJyZW50LT5oYXNMb2NhbE5hbWUoaW5wdXRUYWcpICYmCiAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oY3VycmVudCktPmlucHV0VHlw
ZSgpID09IEhUTUxJbnB1dEVsZW1lbnQ6OkZJTEUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IFN0cmluZyBwYXRoID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGN1cnJlbnQpLT52
YWx1ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwYXRo
ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGN1cnJlbnQpLT52YWx1ZSgpOwogCiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGlmIHRoZSBm
aWxlbmFtZSBpbmNsdWRlcyBhICIgbWFyaywKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9y
IGNvbnRyb2wgY2hhcmFjdGVycyBsaWtlIENSIG9yIExGLiBUaGlzIGFsc28gZG9lcyBzdHJhbmdl
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGluZ3MgaWYgdGhlIGZpbGVuYW1lIGluY2x1
ZGVzIGNoYXJhY3RlcnMgeW91IGNhbid0IGVuY29kZQogICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gaW4gdGhlIHdlYnNpdGUncyBjaGFyYWN0ZXIgc2V0LgogICAgICAgICAgICAgICAgICAgICAg
ICAgaHN0ciArPSAiOyBmaWxlbmFtZT1cIiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQg
c3RhcnQgPSBwYXRoLnJldmVyc2VGaW5kKCcvJykgKyAxOworICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHN0YXJ0ID0gcGF0aC5kb21TdHJpbmcoKS5yZXZlcnNlRmluZCgnLycpICsgMTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGggPSBwYXRoLmxlbmd0aCgpIC0gc3RhcnQ7
CiAgICAgICAgICAgICAgICAgICAgICAgICBoc3RyICs9IGVuY29kaW5nLmVuY29kZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IFVDaGFyKj4ocGF0aC5jaGFyYWN0ZXJzKCkgKyBzdGFydCksIGxlbmd0
aCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBoc3RyICs9ICJcIiI7CiAKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGN1
cnJlbnQpLT52YWx1ZSgpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFwYXRoLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0
ZWRTdHJpbmcgbWltZVR5cGUgPSBNaW1lVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgo
cGF0aCkuZGVwcmVjYXRlZFN0cmluZygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghbWltZVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhzdHIgKz0gIlxyXG5Db250ZW50LVR5cGU6ICI7CkBAIC00OTgsNyArNTAwLDcgQEAgdm9pZCBI
VE1MRm9ybUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidQogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBvbnJlc2V0QXR0cikKICAgICAgICAgc2V0SFRNTEV2ZW50TGlzdGVuZXIocmVzZXRF
dmVudCwgYXR0cik7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRyKSB7Ci0g
ICAgICAgIFN0cmluZyBuZXdOYW1lQXR0ciA9IGF0dHItPnZhbHVlKCk7CisgICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgbmV3TmFtZUF0dHIgPSBhdHRyLT52YWx1ZSgpOwogICAgICAgICBpZiAo
aW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAg
ICAgIEhUTUxEb2N1bWVudCAqZG9jID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50ICo+KGRvY3Vt
ZW50KCkpOwogICAgICAgICAgICAgZG9jLT5yZW1vdmVOYW1lZEl0ZW0ob2xkTmFtZUF0dHIpOwpA
QCAtNTU5LDExICs1NjEsMzAgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZUZvcm1FbGVt
ZW50KAogICAgICAgICBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50KiBjdXJyZW50Q2hlY2tlZFJhZGlv
ID0gZG9jdW1lbnQoKS0+Y2hlY2tlZFJhZGlvQnV0dG9uRm9yR3JvdXAoZS0+bmFtZSgpLmltcGwo
KSwgdGhpcyk7CiAgICAgICAgIGlmIChjdXJyZW50Q2hlY2tlZFJhZGlvID09IGUpCiAgICAgICAg
ICAgICBkb2N1bWVudCgpLT5yZW1vdmVSYWRpb0J1dHRvbkdyb3VwKGUtPm5hbWUoKS5pbXBsKCks
IHRoaXMpOworICAgICAgICBmb3JtRWxlbWVudE5hbWVDaGFuZ2VkKGUsIGUtPm5hbWUoKSk7CiAg
ICAgfQogICAgIHJlbW92ZUZyb21WZWN0b3IoZm9ybUVsZW1lbnRzLCBlKTsKICAgICBkb2N1bWVu
dCgpLT5pbmNET01UcmVlVmVyc2lvbigpOwogfQogCit2b2lkIEhUTUxGb3JtRWxlbWVudDo6Zm9y
bUVsZW1lbnROYW1lQ2hhbmdlZChIVE1MR2VuZXJpY0Zvcm1FbGVtZW50KiBlbGVtZW50LCBjb25z
dCBBdG9taWNTdHJpbmcmIG9sZE5hbWUpCit7CisgICAgaWYgKG9sZE5hbWUuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX29sZE5hbWVzKQorICAgICAgICBtX29sZE5hbWVz
ID0gbmV3IE9sZE5hbWVNYXA7CisgICAgbV9vbGROYW1lcy0+c2V0KG9sZE5hbWUuaW1wbCgpLCBl
bGVtZW50KTsKK30KKworSFRNTEdlbmVyaWNGb3JtRWxlbWVudCogSFRNTEZvcm1FbGVtZW50Ojpv
bGROYW1lZEVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBvbGROYW1lKSBjb25zdAoreworICAg
IGlmIChvbGROYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFtX29s
ZE5hbWVzKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9vbGROYW1lcy0+Z2V0KG9s
ZE5hbWUuaW1wbCgpKS5nZXQoKTsKK30KKwogYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OmlzVVJMQXR0
cmlidXRlKEF0dHJpYnV0ZSAqYXR0cikgY29uc3QKIHsKICAgICByZXR1cm4gYXR0ci0+bmFtZSgp
ID09IGFjdGlvbkF0dHI7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCShyZXZpc2lvbiAyMDA5
MSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NjUsNiArNjUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlZ2lzdGVyRm9ybUVsZW1lbnQoSFRN
TEdlbmVyaWNGb3JtRWxlbWVudCopOwogICAgIHZvaWQgcmVtb3ZlRm9ybUVsZW1lbnQoSFRNTEdl
bmVyaWNGb3JtRWxlbWVudCopOworICAgIHZvaWQgZm9ybUVsZW1lbnROYW1lQ2hhbmdlZChIVE1M
R2VuZXJpY0Zvcm1FbGVtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGROYW1lKTsKKwogICAg
IHZvaWQgcmVnaXN0ZXJJbWdFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQqKTsKICAgICB2b2lkIHJl
bW92ZUltZ0VsZW1lbnQoSFRNTEltYWdlRWxlbWVudCopOwogCkBAIC05OSw2ICsxMDEsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdGFyZ2V0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRU
YXJnZXQoY29uc3QgU3RyaW5nJik7CiAKKyAgICBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50KiBvbGRO
YW1lZEVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBvbGROYW1lKSBjb25zdDsKKwogICAgIC8v
IEZJWE1FOiBDaGFuZ2UgdGhpcyB0byBiZSBwcml2YXRlIGFmdGVyIGdldHRpbmcgcmlkIG9mIGFs
bCB0aGUgY2xpZW50cy4KICAgICBWZWN0b3I8SFRNTEdlbmVyaWNGb3JtRWxlbWVudCo+IGZvcm1F
bGVtZW50czsKIApAQCAtMTA5LDEzICsxMTMsMTUgQEAgcHJpdmF0ZToKIAogICAgIGZyaWVuZCBj
bGFzcyBIVE1MRm9ybUNvbGxlY3Rpb247CiAKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEF0
b21pY1N0cmluZ0ltcGw+LCBSZWZQdHI8SFRNTEdlbmVyaWNGb3JtRWxlbWVudD4gPiBPbGROYW1l
TWFwOworCisgICAgT2xkTmFtZU1hcCogbV9vbGROYW1lczsKICAgICBIVE1MQ29sbGVjdGlvbjo6
Q29sbGVjdGlvbkluZm8qIGNvbGxlY3Rpb25JbmZvOwogCiAgICAgVmVjdG9yPEhUTUxJbWFnZUVs
ZW1lbnQqPiBpbWdFbGVtZW50czsKICAgICBTdHJpbmcgbV91cmw7CiAgICAgU3RyaW5nIG1fdGFy
Z2V0OwogICAgIFN0cmluZyBtX2VuY3R5cGU7Ci0gICAgU3RyaW5nIG1fYm91bmRhcnk7CiAgICAg
U3RyaW5nIG1fYWNjZXB0Y2hhcnNldDsKICAgICBib29sIG1fcG9zdCA6IDE7CiAgICAgYm9vbCBt
X211bHRpcGFydCA6IDE7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEdlbmVyaWNGb3JtRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxHZW5lcmljRm9ybUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAyMDA5MSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MR2VuZXJpY0Zvcm1FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMSw4IEBACiAvKgotICogVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgotICoKICAqIENvcHly
aWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChD
KSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChD
KSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
ICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCkBAIC01NSwxMCArNTMsMTMgQEAgSFRNTEdlbmVyaWNGb3JtRWxlbWVudDo6fkhU
TUxHZW5lcmljRm9ybQogICAgICAgICBtX2Zvcm0tPnJlbW92ZUZvcm1FbGVtZW50KHRoaXMpOwog
fQogCi12b2lkIEhUTUxHZW5lcmljRm9ybUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSAqYXR0cikKK3ZvaWQgSFRNTEdlbmVyaWNGb3JtRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5u
YW1lKCkgPT0gbmFtZUF0dHIpIHsKLSAgICAgICAgLy8gRG8gbm90aGluZy4KKyAgICAgICAgaWYg
KG1fZm9ybSkgeworICAgICAgICAgICAgbV9mb3JtLT5mb3JtRWxlbWVudE5hbWVDaGFuZ2VkKHRo
aXMsIG1fb2xkTmFtZSk7CisgICAgICAgICAgICBtX29sZE5hbWUgPSBuYW1lKCk7CisgICAgICAg
IH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkaXNhYmxlZEF0dHIpIHsKICAgICAg
ICAgYm9vbCBvbGREaXNhYmxlZCA9IG1fZGlzYWJsZWQ7CiAgICAgICAgIG1fZGlzYWJsZWQgPSAh
YXR0ci0+aXNOdWxsKCk7CkBAIC0xMDAsOSArMTAxLDEwIEBAIHZvaWQgSFRNTEdlbmVyaWNGb3Jt
RWxlbWVudDo6aW5zZXJ0ZWRJbnQKICAgICAgICAgLy8gc2V0dGluZyBhIGZvcm0sIHdlIHdpbGwg
YWxyZWFkeSBoYXZlIGEgbm9uLW51bGwgdmFsdWUgZm9yIG1fZm9ybSwgCiAgICAgICAgIC8vIGFu
ZCBzbyB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nLgogICAgICAgICBtX2Zvcm0gPSBnZXRG
b3JtKCk7Ci0gICAgICAgIGlmIChtX2Zvcm0pCisgICAgICAgIGlmIChtX2Zvcm0pIHsKICAgICAg
ICAgICAgIG1fZm9ybS0+cmVnaXN0ZXJGb3JtRWxlbWVudCh0aGlzKTsKLSAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbV9vbGROYW1lID0gbmFtZSgpOworICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGlmIChpc1JhZGlvQnV0dG9uKCkgJiYgIW5hbWUoKS5pc0VtcHR5KCkgJiYgaXNDaGVja2Vk
KCkpCiAgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+cmFkaW9CdXR0b25DaGVja2VkKChIVE1M
SW5wdXRFbGVtZW50Kil0aGlzLCBtX2Zvcm0pOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MR2VuZXJpY0Zvcm1FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxH
ZW5lcmljRm9ybUVsZW1lbnQuaAkocmV2aXNpb24gMjAwOTEpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TEdlbmVyaWNGb3JtRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fZGlzYWJsZWQ7CiAgICAgYm9vbCBtX3JlYWRPbmx5OwogICAg
IG11dGFibGUgYm9vbCBtX3ZhbHVlTWF0Y2hlc1JlbmRlcmVyOwotCisgICAgQXRvbWljU3RyaW5n
IG1fb2xkTmFtZTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAJKHJldmlzaW9uIDIwMDkxKQorKysgV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTEsNiArNTkxLDcgQEAgdm9pZCBIVE1MSW5wdXRF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAgICAgICAgICAgaWYgKGNoZWNrZWQoKSkKICAg
ICAgICAgICAgICAgICBkb2N1bWVudCgpLT5yYWRpb0J1dHRvbkNoZWNrZWQodGhpcywgZm9ybSgp
KTsKICAgICAgICAgfQorICAgICAgICBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShhdHRyKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhdXRvY29t
cGxldGVBdHRyKSB7CiAgICAgICAgIG1fYXV0b2NvbXBsZXRlID0gIWVxdWFsSWdub3JpbmdDYXNl
KGF0dHItPnZhbHVlKCksICJvZmYiKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB0
eXBlQXR0cikgewo=
</data>
<flag name="review"
          id="5382"
          type_id="1"
          status="-"
          setter="bdakin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13675</attachid>
            <date>2007-03-16 16:10:47 -0700</date>
            <delta_ts>2007-03-17 01:10:23 -0700</delta_ts>
            <desc>new patch</desc>
            <filename>12595.patch</filename>
            <type>text/plain</type>
            <size>15915</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIwMjQxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDctMDMtMTcgIEFudHRpIEtvaXZpc3RvICA8
YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
ICAgICAgICAKKyAgICAgICAgVGVzdCBmb3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI1OTUKKyAgICAgICAgUkVHUkVTU0lPTjogQ2FuJ3QgYWRkIGl0ZW0gdG8gY2Fy
dCBhdCBsbnQuY29tIChKUyB0eXBlIGVycm9yKQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDcy
Mjg2Mz4KKyAgICAgICAgCisgICAgICAgIEV4cGFuZGVkIHZlcnNpb24gb2YgRGFyaW4ncyB0ZXN0
IGNhc2UuIAorCisgICAgICAgICogZmFzdC9mb3Jtcy9vbGQtbmFtZXMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL29sZC1uYW1lcy5odG1sOiBBZGRlZC4KKwogMjAw
Ny0wMy0xNSAgSnVzdGluIEdhcmNpYSAgPGp1c3Rpbi5nYXJjaWFAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IGpvaG4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvb2xkLW5h
bWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29s
ZC1uYW1lcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL29sZC1uYW1lcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE0IEBA
CitUaGlzIHRlc3RzIGFjY2Vzc2luZyBmb3JtIGVsZW1lbnRzIGJ5IG5hbWUuIElFIG9ubHkgbGV0
cyB5b3UgbG9vayB1cCBuYW1lcyB1bmRlciB0aGUgZmlyc3QgbmFtZSB0aGUgZWxlbWVudCBoYWQg
YW5kIGRvZXMgbm90IHJlc3BvbmQgdG8gbmFtZSBjaGFuZ2VzLiBGaXJlZm94IHJlbWVtYmVycyBl
dmVyeSBuYW1lIGl0ZW0gaGFzIGJlZW4gYWNjZXNzZWQgd2l0aCwgYnV0IGZvcmdldHMgaXRlbXMg
dGhhdCBoYXZlIG5vdCBiZWVuIGFjY2Vzc2VkLiBUaGlzIHRlc3QgaGFzIGJlZW4gd3JpdHRlbiB0
byBleHBlY3QgdGhlIEZpcmVmb3ggYmVoYXZpb3IuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIGZvcm0ubGVuZ3RoIGlzIDIKK1BBU1MgZm9ybS5vcmlnaW5hbCBpcyBhCitQ
QVNTIGZvcm0ub3JpZ2luYWxCIGlzIGIKK1BBU1MgZm9ybS5zZWNvbmQgaXMgdW5kZWZpbmVkCitQ
QVNTIGZvcm0udGhpcmQgaXMgdW5kZWZpbmVkCitQQVNTIGZvcm0uZWxlbWVudHMub3JpZ2luYWwg
aXMgYQorUEFTUyBmb3JtLmVsZW1lbnRzLm9yaWdpbmFsQiBpcyBiCitQQVNTIGZvcm0uZWxlbWVu
dHMuc2Vjb25kIGlzIHVuZGVmaW5lZAorUEFTUyBmb3JtLmVsZW1lbnRzLnRoaXJkIGlzIHVuZGVm
aW5lZAorCitjaGFuZ2UgdGhlIGZvcm0gaXRlbSBhJ3MgbmFtZSB0byB0aGlzV2lsbEJlUmVtZW1i
ZXJlZAorCitnZXQgdGhlIHZhcmlhYmxlIHZhbHVlIHRocm91Z2ggZm9ybSBlbGVtZW50CitQQVNT
IGZvcm0udGhpc1dpbGxCZVJlbWVtYmVyZWQgaXMgYQorCitub3cgY2hhbmdlIHRoZSBmb3JtIGl0
ZW0gYSdzIG5hbWUgdG8gdGhpc1dpbGxCZVJlbWVtYmVyZWRUb28KK2FjY2VzcyBpdCBpbiBib29s
ZWFuIGNvbnRleHQKKworYWNjZXNzZWQgZm9ybS50aGlzV2lsbEJlUmVtZW1iZXJlZFRvbworCitu
b3cgY2hhbmdlIHRoZSBmb3JtIGl0ZW0gYSdzIG5hbWUgdG8gdGhpc1dpbGxCZUZvcmdvdHRlbgor
CitnZXQgdGhlIHZhcmlhYmxlIHZhbHVlIHRocm91Z2ggY29sbGVjdGlvbgorUEFTUyBmb3JtLmVs
ZW1lbnRzLnRoaXNXaWxsQmVGb3Jnb3R0ZW4gaXMgYQorCitub3cgY2hhbmdlIHRoZSBmb3JtIGl0
ZW0gYSdzIG5hbWUgdG8gdGhpc1dpbGxCZUZvcmdvdHRlblRvbywgYnV0IGRvbid0IGFjY2VzcyBp
dCBhZnRlcndhcmRzCisKK25vdyBjaGFuZ2UgdGhlIGZvcm0gaXRlbSBhJ3MgbmFtZSB0byBzZWNv
bmQKKworUEFTUyBmb3JtLmxlbmd0aCBpcyAyCitQQVNTIGZvcm0ub3JpZ2luYWwgaXMgYQorUEFT
UyBmb3JtLm9yaWdpbmFsQiBpcyBiCitQQVNTIGZvcm0uc2Vjb25kIGlzIGEKK1BBU1MgZm9ybS50
aGlyZCBpcyB1bmRlZmluZWQKK1BBU1MgZm9ybS5lbGVtZW50cy5vcmlnaW5hbCBpcyB1bmRlZmlu
ZWQKK1BBU1MgZm9ybS5lbGVtZW50cy5vcmlnaW5hbEIgaXMgYgorUEFTUyBmb3JtLmVsZW1lbnRz
LnNlY29uZCBpcyBhCitQQVNTIGZvcm0uZWxlbWVudHMudGhpcmQgaXMgdW5kZWZpbmVkCisKK25v
dyBjaGFuZ2UgdGhlIGZvcm0gaXRlbSBhJ3MgbmFtZSB0byB0aGlyZAorCitQQVNTIGZvcm0ubGVu
Z3RoIGlzIDIKK1BBU1MgZm9ybS5vcmlnaW5hbCBpcyBhCitQQVNTIGZvcm0ub3JpZ2luYWxCIGlz
IGIKK1BBU1MgZm9ybS5zZWNvbmQgaXMgYQorUEFTUyBmb3JtLnRoaXJkIGlzIGEKK1BBU1MgZm9y
bS5lbGVtZW50cy5vcmlnaW5hbCBpcyB1bmRlZmluZWQKK1BBU1MgZm9ybS5lbGVtZW50cy5vcmln
aW5hbEIgaXMgYgorUEFTUyBmb3JtLmVsZW1lbnRzLnNlY29uZCBpcyB1bmRlZmluZWQKK1BBU1Mg
Zm9ybS5lbGVtZW50cy50aGlyZCBpcyBhCisKK25vdyBjaGFuZ2UgZm9ybSBpdGVtIGIncyBuYW1l
IHRvIHNlY29uZAorCitQQVNTIGZvcm0ubGVuZ3RoIGlzIDIKK1BBU1MgZm9ybS5vcmlnaW5hbCBp
cyBhCitQQVNTIGZvcm0ub3JpZ2luYWxCIGlzIGIKK1BBU1MgZm9ybS5zZWNvbmQgaXMgYgorUEFT
UyBmb3JtLmVsZW1lbnRzLm9yaWdpbmFsIGlzIHVuZGVmaW5lZAorUEFTUyBmb3JtLmVsZW1lbnRz
Lm9yaWdpbmFsQiBpcyB1bmRlZmluZWQKK1BBU1MgZm9ybS5lbGVtZW50cy5zZWNvbmQgaXMgYgor
Citub3cgY2hhbmdlIGEgZm9ybSBpdGVtIGIncyBuYW1lIHRvIHRoaXJkCisKK1BBU1MgZm9ybS5s
ZW5ndGggaXMgMgorUEFTUyBmb3JtLm9yaWdpbmFsIGlzIGEKK1BBU1MgZm9ybS5vcmlnaW5hbEIg
aXMgYgorUEFTUyBmb3JtLnNlY29uZCBpcyBiCitQQVNTIGZvcm0udGhpcmQubGVuZ3RoIGlzIDIK
K1BBU1MgZm9ybS50aGlyZFswXSBpcyBhCitQQVNTIGZvcm0udGhpcmRbMV0gaXMgYgorUEFTUyBm
b3JtLmVsZW1lbnRzLm9yaWdpbmFsIGlzIHVuZGVmaW5lZAorUEFTUyBmb3JtLmVsZW1lbnRzLm9y
aWdpbmFsQiBpcyB1bmRlZmluZWQKK1BBU1MgZm9ybS5lbGVtZW50cy5zZWNvbmQgaXMgdW5kZWZp
bmVkCitQQVNTIGZvcm0uZWxlbWVudHMudGhpcmQubGVuZ3RoIGlzIDIKK1BBU1MgZm9ybS5lbGVt
ZW50cy50aGlyZFswXSBpcyBhCitQQVNTIGZvcm0uZWxlbWVudHMudGhpcmRbMV0gaXMgYgorCitu
b3cgY2hhbmdlIGEgZm9ybSBpdGVtIGIncyBuYW1lIHRvIGZvdXJ0aAorCitQQVNTIGZvcm0udGhp
cmQgaXMgYQorUEFTUyBmb3JtLnRoaXJkLmxlbmd0aCBpcyB1bmRlZmluZWQKK1BBU1MgZm9ybS5l
bGVtZW50cy50aGlyZCBpcyBhCitQQVNTIGZvcm0uZWxlbWVudHMudGhpcmQubGVuZ3RoIGlzIHVu
ZGVmaW5lZAorCitub3cgcmVtb3ZlIGVsZW1lbnQgYQorCitQQVNTIGZvcm0ubGVuZ3RoIGlzIDEK
K1BBU1MgZm9ybS5vcmlnaW5hbCBpcyBhCitQQVNTIGZvcm0ub3JpZ2luYWxCIGlzIGIKK1BBU1Mg
Zm9ybS5zZWNvbmQgaXMgYgorUEFTUyBmb3JtLnRoaXJkIGlzIGEKK1BBU1MgZm9ybS5mb3VydGgg
aXMgYgorUEFTUyBmb3JtLmVsZW1lbnRzLm9yaWdpbmFsIGlzIHVuZGVmaW5lZAorUEFTUyBmb3Jt
LmVsZW1lbnRzLm9yaWdpbmFsQiBpcyB1bmRlZmluZWQKK1BBU1MgZm9ybS5lbGVtZW50cy5zZWNv
bmQgaXMgdW5kZWZpbmVkCitQQVNTIGZvcm0uZWxlbWVudHMudGhpcmQgaXMgdW5kZWZpbmVkCitQ
QVNTIGZvcm0uZWxlbWVudHMuZm91cnRoIGlzIGIKKworY2hlY2sgd2Ugc3RpbGwgcmVtZW1iZXIg
bmFtZXMgd2Ugc2hvdWxkCisKK1BBU1MgZm9ybS50aGlzV2lsbEJlRm9yZ290dGVuIGlzIHVuZGVm
aW5lZAorUEFTUyBmb3JtLnRoaXNXaWxsQmVGb3Jnb3R0ZW5Ub28gaXMgdW5kZWZpbmVkCitQQVNT
IGZvcm0udGhpc1dpbGxCZVJlbWVtYmVyZWQgaXMgYQorUEFTUyBmb3JtLnRoaXNXaWxsQmVSZW1l
bWJlcmVkVG9vIGlzIGEKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvb2xkLW5hbWVzLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbGQtbmFtZXMuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvb2xkLW5hbWVzLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTY4IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGRlc2NyaXB0aW9u
KCJUaGlzIHRlc3RzIGFjY2Vzc2luZyBmb3JtIGVsZW1lbnRzIGJ5IG5hbWUuICIKKyAgICAgICAg
KyAiSUUgb25seSBsZXRzIHlvdSBsb29rIHVwIG5hbWVzIHVuZGVyIHRoZSBmaXJzdCBuYW1lIHRo
ZSBlbGVtZW50IGhhZCBhbmQgIgorICAgICAgICArICJkb2VzIG5vdCByZXNwb25kIHRvIG5hbWUg
Y2hhbmdlcy4gRmlyZWZveCByZW1lbWJlcnMgZXZlcnkgbmFtZSBpdGVtIGhhcyBiZWVuICIKKyAg
ICAgICAgKyAiYWNjZXNzZWQgd2l0aCwgYnV0IGZvcmdldHMgaXRlbXMgdGhhdCBoYXZlIG5vdCBi
ZWVuIGFjY2Vzc2VkLiAiCisgICAgICAgICsgIlRoaXMgdGVzdCBoYXMgYmVlbiB3cml0dGVuIHRv
IGV4cGVjdCB0aGUgRmlyZWZveCBiZWhhdmlvci4iKTsKKworICAgIGZvcm0gPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZm9ybScpOworICAgIGEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YScpOworICAgIGIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYicpOworCisgICAgc2hvdWxk
QmUoJ2Zvcm0ubGVuZ3RoJywgJzInKTsKKyAgICBzaG91bGRCZSgnZm9ybS5vcmlnaW5hbCcsICdh
Jyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0ub3JpZ2luYWxCJywgJ2InKTsKKyAgICBzaG91bGRCZSgn
Zm9ybS5zZWNvbmQnLCAndW5kZWZpbmVkJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0udGhpcmQnLCAn
dW5kZWZpbmVkJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMub3JpZ2luYWwnLCAnYScp
OworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLm9yaWdpbmFsQicsICdiJyk7CisgICAgc2hv
dWxkQmUoJ2Zvcm0uZWxlbWVudHMuc2Vjb25kJywgJ3VuZGVmaW5lZCcpOworICAgIHNob3VsZEJl
KCdmb3JtLmVsZW1lbnRzLnRoaXJkJywgJ3VuZGVmaW5lZCcpOworCisgICAgZGVidWcoJycpOyAg
IAorICAgIGRlYnVnKCJjaGFuZ2UgdGhlIGZvcm0gaXRlbSBhJ3MgbmFtZSB0byB0aGlzV2lsbEJl
UmVtZW1iZXJlZCIpOworICAgIGRlYnVnKCcnKTsgICAKKyAgICBhLm5hbWU9InRoaXNXaWxsQmVS
ZW1lbWJlcmVkIjsKKyAgICBkZWJ1ZygiZ2V0IHRoZSB2YXJpYWJsZSB2YWx1ZSB0aHJvdWdoIGZv
cm0gZWxlbWVudCIpOworICAgIHNob3VsZEJlKCdmb3JtLnRoaXNXaWxsQmVSZW1lbWJlcmVkJywg
J2EnKTsKKyAgICBkZWJ1ZygnJyk7ICAgCisgICAgZGVidWcoIm5vdyBjaGFuZ2UgdGhlIGZvcm0g
aXRlbSBhJ3MgbmFtZSB0byB0aGlzV2lsbEJlUmVtZW1iZXJlZFRvbyIpOworICAgIGRlYnVnKCJh
Y2Nlc3MgaXQgaW4gYm9vbGVhbiBjb250ZXh0Iik7CisgICAgYS5uYW1lPSJ0aGlzV2lsbEJlUmVt
ZW1iZXJlZFRvbyI7CisgICAgZGVidWcoJycpOyAgIAorICAgIGlmIChmb3JtLnRoaXNXaWxsQmVS
ZW1lbWJlcmVkVG9vKQorICAgICAgICBkZWJ1ZygnYWNjZXNzZWQgZm9ybS50aGlzV2lsbEJlUmVt
ZW1iZXJlZFRvbycpOworICAgIGRlYnVnKCcnKTsgICAKKyAgICBkZWJ1Zygibm93IGNoYW5nZSB0
aGUgZm9ybSBpdGVtIGEncyBuYW1lIHRvIHRoaXNXaWxsQmVGb3Jnb3R0ZW4iKTsKKyAgICBkZWJ1
ZygnJyk7ICAgCisgICAgYS5uYW1lPSJ0aGlzV2lsbEJlRm9yZ290dGVuIjsKKyAgICBkZWJ1Zygi
Z2V0IHRoZSB2YXJpYWJsZSB2YWx1ZSB0aHJvdWdoIGNvbGxlY3Rpb24iKTsKKyAgICBzaG91bGRC
ZSgnZm9ybS5lbGVtZW50cy50aGlzV2lsbEJlRm9yZ290dGVuJywgJ2EnKTsKKyAgICBkZWJ1Zygn
Jyk7ICAgCisgICAgZGVidWcoIm5vdyBjaGFuZ2UgdGhlIGZvcm0gaXRlbSBhJ3MgbmFtZSB0byB0
aGlzV2lsbEJlRm9yZ290dGVuVG9vLCBidXQgZG9uJ3QgYWNjZXNzIGl0IGFmdGVyd2FyZHMiKTsK
KyAgICBhLm5hbWU9InRoaXNXaWxsQmVGb3Jnb3R0ZW5Ub28iOworICAgICAgICAKKyAgICBkZWJ1
ZygnJyk7ICAgIAorICAgIGRlYnVnKCJub3cgY2hhbmdlIHRoZSBmb3JtIGl0ZW0gYSdzIG5hbWUg
dG8gc2Vjb25kIik7CisgICAgZGVidWcoJycpOworICAgIGEubmFtZT0ic2Vjb25kIjsKKyAgICAK
KyAgICBzaG91bGRCZSgnZm9ybS5sZW5ndGgnLCAnMicpOworICAgIHNob3VsZEJlKCdmb3JtLm9y
aWdpbmFsJywgJ2EnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5vcmlnaW5hbEInLCAnYicpOworICAg
IHNob3VsZEJlKCdmb3JtLnNlY29uZCcsICdhJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0udGhpcmQn
LCAndW5kZWZpbmVkJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMub3JpZ2luYWwnLCAn
dW5kZWZpbmVkJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMub3JpZ2luYWxCJywgJ2In
KTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50cy5zZWNvbmQnLCAnYScpOworICAgIHNob3Vs
ZEJlKCdmb3JtLmVsZW1lbnRzLnRoaXJkJywgJ3VuZGVmaW5lZCcpOworCisgICAgZGVidWcoJycp
OworICAgIGRlYnVnKCJub3cgY2hhbmdlIHRoZSBmb3JtIGl0ZW0gYSdzIG5hbWUgdG8gdGhpcmQi
KTsKKyAgICBkZWJ1ZygnJyk7CisKKyAgICBhLm5hbWU9InRoaXJkIjsKKworICAgIHNob3VsZEJl
KCdmb3JtLmxlbmd0aCcsICcyJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0ub3JpZ2luYWwnLCAnYScp
OworICAgIHNob3VsZEJlKCdmb3JtLm9yaWdpbmFsQicsICdiJyk7CisgICAgc2hvdWxkQmUoJ2Zv
cm0uc2Vjb25kJywgJ2EnKTsKKyAgICBzaG91bGRCZSgnZm9ybS50aGlyZCcsICdhJyk7CisgICAg
c2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMub3JpZ2luYWwnLCAndW5kZWZpbmVkJyk7CisgICAgc2hv
dWxkQmUoJ2Zvcm0uZWxlbWVudHMub3JpZ2luYWxCJywgJ2InKTsKKyAgICBzaG91bGRCZSgnZm9y
bS5lbGVtZW50cy5zZWNvbmQnLCAndW5kZWZpbmVkJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxl
bWVudHMudGhpcmQnLCAnYScpOworCisgICAgZGVidWcoJycpOworICAgIGRlYnVnKCJub3cgY2hh
bmdlIGZvcm0gaXRlbSBiJ3MgbmFtZSB0byBzZWNvbmQiKTsKKyAgICBkZWJ1ZygnJyk7CisKKyAg
ICBiLm5hbWU9InNlY29uZCI7CisKKyAgICBzaG91bGRCZSgnZm9ybS5sZW5ndGgnLCAnMicpOwor
ICAgIHNob3VsZEJlKCdmb3JtLm9yaWdpbmFsJywgJ2EnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5v
cmlnaW5hbEInLCAnYicpOworICAgIHNob3VsZEJlKCdmb3JtLnNlY29uZCcsICdiJyk7CisgICAg
c2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMub3JpZ2luYWwnLCAndW5kZWZpbmVkJyk7CisgICAgc2hv
dWxkQmUoJ2Zvcm0uZWxlbWVudHMub3JpZ2luYWxCJywgJ3VuZGVmaW5lZCcpOworICAgIHNob3Vs
ZEJlKCdmb3JtLmVsZW1lbnRzLnNlY29uZCcsICdiJyk7CisKKyAgICBkZWJ1ZygnJyk7CisgICAg
ZGVidWcoIm5vdyBjaGFuZ2UgYSBmb3JtIGl0ZW0gYidzIG5hbWUgdG8gdGhpcmQiKTsKKyAgICBk
ZWJ1ZygnJyk7CisKKyAgICBmb3JtLm9yaWdpbmFsQi5uYW1lPSJ0aGlyZCI7CisKKyAgICBzaG91
bGRCZSgnZm9ybS5sZW5ndGgnLCAnMicpOworICAgIHNob3VsZEJlKCdmb3JtLm9yaWdpbmFsJywg
J2EnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5vcmlnaW5hbEInLCAnYicpOworICAgIHNob3VsZEJl
KCdmb3JtLnNlY29uZCcsICdiJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0udGhpcmQubGVuZ3RoJywg
JzInKTsKKyAgICBzaG91bGRCZSgnZm9ybS50aGlyZFswXScsICdhJyk7CisgICAgc2hvdWxkQmUo
J2Zvcm0udGhpcmRbMV0nLCAnYicpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLm9yaWdp
bmFsJywgJ3VuZGVmaW5lZCcpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLm9yaWdpbmFs
QicsICd1bmRlZmluZWQnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50cy5zZWNvbmQnLCAn
dW5kZWZpbmVkJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMudGhpcmQubGVuZ3RoJywg
JzInKTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50cy50aGlyZFswXScsICdhJyk7CisgICAg
c2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMudGhpcmRbMV0nLCAnYicpOworICAgIAorICAgIGRlYnVn
KCcnKTsKKyAgICBkZWJ1Zygibm93IGNoYW5nZSBhIGZvcm0gaXRlbSBiJ3MgbmFtZSB0byBmb3Vy
dGgiKTsKKyAgICBkZWJ1ZygnJyk7CisKKyAgICBmb3JtLm9yaWdpbmFsQi5uYW1lPSJmb3VydGgi
OworICAgIAorICAgIHNob3VsZEJlKCdmb3JtLnRoaXJkJywgJ2EnKTsKKyAgICBzaG91bGRCZSgn
Zm9ybS50aGlyZC5sZW5ndGgnLCAndW5kZWZpbmVkJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxl
bWVudHMudGhpcmQnLCAnYScpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLnRoaXJkLmxl
bmd0aCcsICd1bmRlZmluZWQnKTsKKworICAgIGRlYnVnKCcnKTsKKyAgICBkZWJ1Zygibm93IHJl
bW92ZSBlbGVtZW50IGEiKTsKKyAgICBkZWJ1ZygnJyk7CisKKyAgICBmb3JtLnJlbW92ZUNoaWxk
KGEpOworCisgICAgc2hvdWxkQmUoJ2Zvcm0ubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgn
Zm9ybS5vcmlnaW5hbCcsICdhJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0ub3JpZ2luYWxCJywgJ2In
KTsKKyAgICBzaG91bGRCZSgnZm9ybS5zZWNvbmQnLCAnYicpOworICAgIHNob3VsZEJlKCdmb3Jt
LnRoaXJkJywgJ2EnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5mb3VydGgnLCAnYicpOworICAgIHNo
b3VsZEJlKCdmb3JtLmVsZW1lbnRzLm9yaWdpbmFsJywgJ3VuZGVmaW5lZCcpOworICAgIHNob3Vs
ZEJlKCdmb3JtLmVsZW1lbnRzLm9yaWdpbmFsQicsICd1bmRlZmluZWQnKTsKKyAgICBzaG91bGRC
ZSgnZm9ybS5lbGVtZW50cy5zZWNvbmQnLCAndW5kZWZpbmVkJyk7CisgICAgc2hvdWxkQmUoJ2Zv
cm0uZWxlbWVudHMudGhpcmQnLCAndW5kZWZpbmVkJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxl
bWVudHMuZm91cnRoJywgJ2InKTsKKyAKKyAgICBkZWJ1ZygnJyk7CisgICAgZGVidWcoImNoZWNr
IHdlIHN0aWxsIHJlbWVtYmVyIG5hbWVzIHdlIHNob3VsZCIpOworICAgIGRlYnVnKCcnKTsKKwor
ICAgIHNob3VsZEJlKCdmb3JtLnRoaXNXaWxsQmVGb3Jnb3R0ZW4nLCAndW5kZWZpbmVkJyk7Cisg
ICAgc2hvdWxkQmUoJ2Zvcm0udGhpc1dpbGxCZUZvcmdvdHRlblRvbycsICd1bmRlZmluZWQnKTsK
KyAgICBzaG91bGRCZSgnZm9ybS50aGlzV2lsbEJlUmVtZW1iZXJlZCcsICdhJyk7CisgICAgc2hv
dWxkQmUoJ2Zvcm0udGhpc1dpbGxCZVJlbWVtYmVyZWRUb28nLCAnYScpOworICAgIGRlYnVnKCcn
KTsKKyAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxmb3JtIGlkPSdmb3JtJz4KKzxpbnB1dCB0eXBlPSdoaWRkZW4nIGlkPSdhJyBu
YW1lPSdvcmlnaW5hbCc+Cis8aW5wdXQgdHlwZT0naGlkZGVuJyBpZD0nYicgbmFtZT0nb3JpZ2lu
YWxCJz4KKzwvZm9ybT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PnJ1blRlc3QoKTs8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20u
Y3BwCShyZXZpc2lvbiAyMDIzNCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVs
ZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNyArMzUsMjMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBib29sIEpTSFRNTEZvcm1FbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5h
bWUoRXhlY1N0YXRlKiBleGVjLCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0IEF0b21pY1N0
cmluZyYgcHJvcGVydHlOYW1lKQogewotICAgIC8vIEZJWE1FOiBpZGVhbGx5IHRoZXJlIHNob3Vs
ZCBiZSBhIGxpZ2h0ZXItd2VpZ2h0IHdheSBvZiBkb2luZyB0aGlzCi0gICAgSlNWYWx1ZSogbmFt
ZWRJdGVtcyA9IEpTSFRNTENvbGxlY3Rpb24oZXhlYywgZm9ybS0+ZWxlbWVudHMoKS5nZXQoKSku
Z2V0TmFtZWRJdGVtcyhleGVjLCBwcm9wZXJ0eU5hbWUpOwotICAgIHJldHVybiAhbmFtZWRJdGVt
cy0+aXNVbmRlZmluZWQoKTsKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsK
KyAgICBmb3JtLT5nZXROYW1lZEVsZW1lbnRzKHByb3BlcnR5TmFtZSwgbmFtZWRJdGVtcyk7Cisg
ICAgcmV0dXJuIG5hbWVkSXRlbXMuc2l6ZSgpOwogfQogCiBKU1ZhbHVlKiBKU0hUTUxGb3JtRWxl
bWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgSlNI
VE1MRWxlbWVudCogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTSFRNTEVsZW1lbnQqPihzbG90LnNs
b3RCYXNlKCkpOwotICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IHN0YXRpY19jYXN0PEhUTUxG
b3JtRWxlbWVudCo+KHRoaXNPYmotPmltcGwoKSk7CisgICAgSFRNTEZvcm1FbGVtZW50KiBmb3Jt
ID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oc3RhdGljX2Nhc3Q8SlNIVE1MRWxlbWVu
dCo+KHNsb3Quc2xvdEJhc2UoKSktPmltcGwoKSk7CiAgICAgCi0gICAgcmV0dXJuIEpTSFRNTENv
bGxlY3Rpb24oZXhlYywgZm9ybS0+ZWxlbWVudHMoKS5nZXQoKSkuZ2V0TmFtZWRJdGVtcyhleGVj
LCBwcm9wZXJ0eU5hbWUpOworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOwor
ICAgIGZvcm0tPmdldE5hbWVkRWxlbWVudHMocHJvcGVydHlOYW1lLCBuYW1lZEl0ZW1zKTsKKyAg
ICAKKyAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIHRvSlMo
ZXhlYywgbmFtZWRJdGVtc1swXS5nZXQoKSk7CisgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID4g
MSkgCisgICAgICAgIHJldHVybiBuZXcgRE9NTmFtZWROb2Rlc0NvbGxlY3Rpb24oZXhlYywgbmFt
ZWRJdGVtcyk7CisgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCiB9CkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gMjAyMzQpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksMjEgKzQ5LDIzIEBAIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEhUTUxGb3JtRWxlbWVudDo6SFRNTEZvcm1FbGVtZW50
KERvY3VtZW50KiBkb2MpCiAgICAgOiBIVE1MRWxlbWVudChmb3JtVGFnLCBkb2MpCisgICAgLCBt
X2VsZW1lbnRBbGlhc2VzKDApCisgICAgLCBjb2xsZWN0aW9uSW5mbygwKQorICAgICwgbV9lbmN0
eXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKQorICAgICwgbV9wb3N0KGZh
bHNlKQorICAgICwgbV9tdWx0aXBhcnQoZmFsc2UpCisgICAgLCBtX2F1dG9jb21wbGV0ZShmYWxz
ZSkKKyAgICAsIG1faW5zdWJtaXQoZmFsc2UpCisgICAgLCBtX2RvaW5nc3VibWl0KGZhbHNlKQor
ICAgICwgbV9pbnJlc2V0KGZhbHNlKQorICAgICwgbV9tYWxmb3JtZWQoZmFsc2UpCisgICAgLCBt
X3ByZXNlcnZlQWNyb3NzUmVtb3ZlKGZhbHNlKQogewotICAgIGNvbGxlY3Rpb25JbmZvID0gMDsK
LSAgICBtX3Bvc3QgPSBmYWxzZTsKLSAgICBtX211bHRpcGFydCA9IGZhbHNlOwotICAgIG1fYXV0
b2NvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX2luc3VibWl0ID0gZmFsc2U7Ci0gICAgbV9kb2luZ3N1
Ym1pdCA9IGZhbHNlOwotICAgIG1faW5yZXNldCA9IGZhbHNlOwotICAgIG1fZW5jdHlwZSA9ICJh
cHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiOwotICAgIG1fbWFsZm9ybWVkID0gZmFs
c2U7Ci0gICAgbV9wcmVzZXJ2ZUFjcm9zc1JlbW92ZSA9IGZhbHNlOwogfQogCiBIVE1MRm9ybUVs
ZW1lbnQ6On5IVE1MRm9ybUVsZW1lbnQoKQogeworICAgIGRlbGV0ZSBtX2VsZW1lbnRBbGlhc2Vz
OwogICAgIGRlbGV0ZSBjb2xsZWN0aW9uSW5mbzsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZm9ybUVsZW1lbnRzLnNpemUoKTsgKytpKQpAQCAtNjM4LDUgKzY0MCw0NCBAQCB2
b2lkIEhUTUxGb3JtRWxlbWVudDo6c2V0VGFyZ2V0KGNvbnN0IFN0CiB7CiAgICAgc2V0QXR0cmli
dXRlKHRhcmdldEF0dHIsIHZhbHVlKTsKIH0KLSAgICAKKworUGFzc1JlZlB0cjxIVE1MR2VuZXJp
Y0Zvcm1FbGVtZW50PiBIVE1MRm9ybUVsZW1lbnQ6OmVsZW1lbnRGb3JBbGlhcyhjb25zdCBBdG9t
aWNTdHJpbmcmIGFsaWFzKQoreworICAgIGlmIChhbGlhcy5pc0VtcHR5KCkgfHwgIW1fZWxlbWVu
dEFsaWFzZXMpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2VsZW1lbnRBbGlhc2Vz
LT5nZXQoYWxpYXMuaW1wbCgpKTsKK30KKwordm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmFkZEVsZW1l
bnRBbGlhcyhIVE1MR2VuZXJpY0Zvcm1FbGVtZW50KiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJp
bmcmIGFsaWFzKQoreworICAgIGlmIChhbGlhcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KyAgICBpZiAoIW1fZWxlbWVudEFsaWFzZXMpCisgICAgICAgIG1fZWxlbWVudEFsaWFzZXMgPSBu
ZXcgQWxpYXNNYXA7CisgICAgbV9lbGVtZW50QWxpYXNlcy0+c2V0KGFsaWFzLmltcGwoKSwgZWxl
bWVudCk7Cit9CisKK3ZvaWQgSFRNTEZvcm1FbGVtZW50OjpnZXROYW1lZEVsZW1lbnRzKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBuYW1lZEl0ZW1zKQor
eworICAgIGVsZW1lbnRzKCktPm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7CisKKyAgICAv
LyBzZWUgaWYgd2UgaGF2ZSBzZWVuIHNvbWV0aGluZyB3aXRoIHRoaXMgbmFtZSBiZWZvcmUKKyAg
ICBSZWZQdHI8SFRNTEdlbmVyaWNGb3JtRWxlbWVudD4gYWxpYXNFbGVtOworICAgIGlmIChhbGlh
c0VsZW0gPSBlbGVtZW50Rm9yQWxpYXMobmFtZSkpIHsKKyAgICAgICAgYm9vbCBmb3VuZCA9IGZh
bHNlOworICAgICAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgbmFtZWRJdGVtcy5zaXplKCk7
IG4rKykgeworICAgICAgICAgICAgaWYgKG5hbWVkSXRlbXNbbl0gPT0gYWxpYXNFbGVtLmdldCgp
KSB7CisgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghZm91bmQpCisgICAgICAg
ICAgICAvLyB3ZSBoYXZlIHNlZW4gaXQgYmVmb3JlIGJ1dCBpdCBpcyBnb25lIG5vdy4gc3RpbGws
IHdlIG5lZWQgdG8gcmV0dXJuIGl0LgorICAgICAgICAgICAgbmFtZWRJdGVtcy5hcHBlbmQoYWxp
YXNFbGVtLmdldCgpKTsKKyAgICB9CisgICAgLy8gbmFtZSBoYXMgYmVlbiBhY2Nlc3NlZCwgcmVt
ZW1iZXIgaXQKKyAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgJiYgYWxpYXNFbGVtICE9IG5hbWVk
SXRlbXMuZmlyc3QoKSkKKyAgICAgICAgYWRkRWxlbWVudEFsaWFzKHN0YXRpY19jYXN0PEhUTUxH
ZW5lcmljRm9ybUVsZW1lbnQqPihuYW1lZEl0ZW1zLmZpcnN0KCkuZ2V0KCkpLCBuYW1lKTsgICAg
ICAgIAorfQorCiB9IC8vIG5hbWVzcGFjZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAkocmV2
aXNpb24gMjAyMzQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDYgKzUwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVM
b2NhbEV2ZW50cyhFdmVudCosIGJvb2wgdXNlQ2FwdHVyZSk7CiAgICAgIAogICAgIFBhc3NSZWZQ
dHI8SFRNTENvbGxlY3Rpb24+IGVsZW1lbnRzKCk7CisgICAgdm9pZCBnZXROYW1lZEVsZW1lbnRz
KGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYpOworICAgIAogICAg
IHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogICAgIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgp
OwogCkBAIC05OCw2ICsxMDAsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFN0cmluZyB0YXJn
ZXQoKSBjb25zdDsKICAgICB2b2lkIHNldFRhcmdldChjb25zdCBTdHJpbmcmKTsKKyAgICAKKyAg
ICBQYXNzUmVmUHRyPEhUTUxHZW5lcmljRm9ybUVsZW1lbnQ+IGVsZW1lbnRGb3JBbGlhcyhjb25z
dCBBdG9taWNTdHJpbmcmKTsKKyAgICB2b2lkIGFkZEVsZW1lbnRBbGlhcyhIVE1MR2VuZXJpY0Zv
cm1FbGVtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBhbGlhcyk7CiAKICAgICAvLyBGSVhNRTog
Q2hhbmdlIHRoaXMgdG8gYmUgcHJpdmF0ZSBhZnRlciBnZXR0aW5nIHJpZCBvZiBhbGwgdGhlIGNs
aWVudHMuCiAgICAgVmVjdG9yPEhUTUxHZW5lcmljRm9ybUVsZW1lbnQqPiBmb3JtRWxlbWVudHM7
CkBAIC0xMDksMTMgKzExNCwxNSBAQCBwcml2YXRlOgogCiAgICAgZnJpZW5kIGNsYXNzIEhUTUxG
b3JtQ29sbGVjdGlvbjsKIAorICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8QXRvbWljU3RyaW5n
SW1wbD4sIFJlZlB0cjxIVE1MR2VuZXJpY0Zvcm1FbGVtZW50PiA+IEFsaWFzTWFwOworICAgIAor
ICAgIEFsaWFzTWFwKiBtX2VsZW1lbnRBbGlhc2VzOwogICAgIEhUTUxDb2xsZWN0aW9uOjpDb2xs
ZWN0aW9uSW5mbyogY29sbGVjdGlvbkluZm87CiAKICAgICBWZWN0b3I8SFRNTEltYWdlRWxlbWVu
dCo+IGltZ0VsZW1lbnRzOwogICAgIFN0cmluZyBtX3VybDsKICAgICBTdHJpbmcgbV90YXJnZXQ7
CiAgICAgU3RyaW5nIG1fZW5jdHlwZTsKLSAgICBTdHJpbmcgbV9ib3VuZGFyeTsKICAgICBTdHJp
bmcgbV9hY2NlcHRjaGFyc2V0OwogICAgIGJvb2wgbV9wb3N0IDogMTsKICAgICBib29sIG1fbXVs
dGlwYXJ0IDogMTsK
</data>
<flag name="review"
          id="5438"
          type_id="1"
          status="+"
          setter="adele"
    />
          </attachment>
      

    </bug>

</bugzilla>