<?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>64097</bug_id>
          
          <creation_ts>2011-07-07 09:19:22 -0700</creation_ts>
          <short_desc>Web Inspector: Add support for disabling cache in web inspector.</short_desc>
          <delta_ts>2011-08-05 10:11:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>ap</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>mathias</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>433496</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-07 09:19:22 -0700</bug_when>
    <thetext>Add support for disabling cache in web inspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434041</commentid>
    <comment_count>1</comment_count>
      <attachid>100116</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-08 07:11:36 -0700</bug_when>
    <thetext>Created attachment 100116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434101</commentid>
    <comment_count>2</comment_count>
      <attachid>100116</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-08 09:15:30 -0700</bug_when>
    <thetext>Comment on attachment 100116
Patch

Attachment 100116 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9001475</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434103</commentid>
    <comment_count>3</comment_count>
      <attachid>100126</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-08 09:19:57 -0700</bug_when>
    <thetext>Created attachment 100126
Patch (mac fix)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434123</commentid>
    <comment_count>4</comment_count>
      <attachid>100126</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-07-08 10:16:46 -0700</bug_when>
    <thetext>Comment on attachment 100126
Patch (mac fix)

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

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:440
&gt; +    memoryCache()-&gt;setDisabled(false);

Technically this should restore the memory cache state to whatever the normal operating
state was when the agent was enabled. But I&apos;m sure its safe to assume enabling the cache is fine.

&gt; Source/WebCore/inspector/front-end/Settings.js:85
&gt; +    this.installApplicationSetting(&quot;cacheDisabled&quot;, false);

What if the cache is already disabled? I think it would be cooler if this reflected
the actual state of the WebCore MemoryCache. In most cases, yes the cache
will be enabled, but that may not always be the case.

&gt; Source/WebCore/inspector/front-end/SettingsScreen.js:49
&gt; +    p.appendChild(this._createCheckboxSetting(WebInspector.UIString(&quot;Disable cache&quot;), WebInspector.settings.cacheDisabled));

Was this a new localized string? It would need to be added to Source/WebCore/English.lproj/localizedStrings.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434760</commentid>
    <comment_count>5</comment_count>
      <attachid>100126</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-07-11 04:43:00 -0700</bug_when>
    <thetext>Comment on attachment 100126
Patch (mac fix)

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

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:433
&gt; +    memoryCache()-&gt;setDisabled(m_state-&gt;getBoolean(ResourceAgentState::cacheDisabled));

I&apos;d rather introduce memoryCache()-&gt;setDisabledByInspector().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434824</commentid>
    <comment_count>6</comment_count>
      <attachid>100288</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-11 06:25:24 -0700</bug_when>
    <thetext>Created attachment 100288
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434827</commentid>
    <comment_count>7</comment_count>
      <attachid>100289</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-11 06:29:15 -0700</bug_when>
    <thetext>Created attachment 100289
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434834</commentid>
    <comment_count>8</comment_count>
      <attachid>100289</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-07-11 06:39:42 -0700</bug_when>
    <thetext>Comment on attachment 100289
Patch

Looks good inspector-wise. Lets get blessing from ap on the MemoryCache change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434861</commentid>
    <comment_count>9</comment_count>
      <attachid>100289</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-11 07:30:27 -0700</bug_when>
    <thetext>Comment on attachment 100289
Patch

Attachment 100289 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9011479</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434874</commentid>
    <comment_count>10</comment_count>
      <attachid>100300</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-11 07:51:07 -0700</bug_when>
    <thetext>Created attachment 100300
Patch (mac build fix)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436619</commentid>
    <comment_count>11</comment_count>
      <attachid>100300</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-13 13:12:15 -0700</bug_when>
    <thetext>Comment on attachment 100300
Patch (mac build fix)

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

The WebCore code that was added seems unnecessary - we already have a way to disable memory cache via Safari Debug menu &lt;http://macs.about.com/od/usingyourmac/qt/safaridebug.htm&gt;. You should be able to use the same code as existing functionality does.

Finally, I&apos;m really unsure if Web Inspector users ever need to disable WebCore memory cache. This is useful for WebKit development, and this is why the functionality is in Debug menu, but I don&apos;t think that it should be exposed via Web Inspector.

&gt; Source/WebCore/loader/cache/MemoryCache.h:210
&gt; +    bool m_disabledByInspector; // Whether or not the cache is disabled by inspector.

I&apos;m very much unsure if there is a need to track how exactly the memory cache was disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439143</commentid>
    <comment_count>12</comment_count>
      <attachid>101317</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-19 07:44:07 -0700</bug_when>
    <thetext>Created attachment 101317
Patch with comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439147</commentid>
    <comment_count>13</comment_count>
      <attachid>101319</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-19 08:00:55 -0700</bug_when>
    <thetext>Created attachment 101319
Patch with comments addressed (rebaselined)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439155</commentid>
    <comment_count>14</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-19 08:13:39 -0700</bug_when>
    <thetext>As MemoryCahce::setDisabled is only called outside of WebCore currently, I moved this call out to chromium specific code.
This way, each port could take care of memoryCache state independently.

&gt; Finally, I&apos;m really unsure if Web Inspector users ever need to disable WebCore memory cache. This is useful for WebKit development, and this is why the functionality is in Debug menu, but I don&apos;t think that it should be exposed via Web Inspector.

I contacted one of the twitter developers, who claimed they need that. It appears they have different environment in production and development and while they evidently don&apos;t need to disable cache in production, the find it very useful to disable it while developing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439166</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-19 08:52:05 -0700</bug_when>
    <thetext>&gt; I contacted one of the twitter developers, who claimed they need that.

What would be valuable is knowing _why_ they need it. For any feature, there will be many people claiming that they absolutely require it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439200</commentid>
    <comment_count>16</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-19 09:23:07 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt; I contacted one of the twitter developers, who claimed they need that.
&gt; 
&gt; What would be valuable is knowing _why_ they need it. For any feature, there will be many people claiming that they absolutely require it.

As I said, they have different development environment where they do not version their scripts - not something you want to do each time you change one character.
It&apos;s clearly possible to force web server to send no-cache headers, but that would require an extra effort from web developers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440012</commentid>
    <comment_count>17</comment_count>
      <attachid>101319</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-07-20 14:17:11 -0700</bug_when>
    <thetext>Comment on attachment 101319
Patch with comments addressed (rebaselined)

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

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:439
&gt; +    m_client-&gt;setCacheDisabled(m_state-&gt;getBoolean(ResourceAgentState::cacheDisabled));

Nit: I&apos;d suggest that you put this into ::restore instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440034</commentid>
    <comment_count>18</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-20 14:54:04 -0700</bug_when>
    <thetext>Committed r91408: &lt;http://trac.webkit.org/changeset/91408&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440043</commentid>
    <comment_count>19</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-20 15:01:28 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 101319 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=101319&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:439
&gt; &gt; +    m_client-&gt;setCacheDisabled(m_state-&gt;getBoolean(ResourceAgentState::cacheDisabled));
&gt; 
&gt; Nit: I&apos;d suggest that you put this into ::restore instead.

Disabling cache requires setting specific headers in willSendRequest, so it requires inspectorResourceAgent to be enabled.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100116</attachid>
            <date>2011-07-08 07:11:36 -0700</date>
            <delta_ts>2011-07-08 09:19:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64097-20110708181134.patch</filename>
            <type>text/plain</type>
            <size>20139</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA2MTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZDNkZDZkMjEyMTk3N2ZiMzU4NmE4
ZTAxYzczNjkxZjIxZmZhNDQzLi4xMTg4YjFkYjMxNWU4NTkyM2M0MTg4NmIxYWI2NjA4ZjM3NWQ5
ZTFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDctMDggIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBv
cnQgZm9yIGRpc2FibGluZyBjYWNoZSBpbiB3ZWIgaW5zcGVjdG9yLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwOTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0KToKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNo
ZS1tZW1vcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNoZS1tZW1vcnkuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2Fj
aGUteGhycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhw
OgorCiAyMDExLTA3LTA4ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZC4gTW92aW5nIHRlc3QgZXhwZWN0YXRpb24gZnJvbSBwbGF0Zm9y
bS1zcGVjaWZpYyB0byBnZW5lcmljLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwppbmRleCA2YzM1ZjgwYmRkMGM0ZTIxNGE4MzI1MzE0
ZjlhZmQ0ODk5MmQ2YjU2Li5lYjhlZjhmMjQxZmY5ZTYzMTIyZjU1NzZiMzMyM2RhM2FiZjc2N2Jm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3It
dGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3It
dGVzdC5qcwpAQCAtMjQ1LDcgKzI0NSw3IEBAIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzID0g
ZnVuY3Rpb24oZXhwZWN0ZWQsIGZvdW5kLCBtZXNzYWdlKQogCiBJbnNwZWN0b3JUZXN0LmFzc2Vy
dFRydWUgPSBmdW5jdGlvbihmb3VuZCwgbWVzc2FnZSkKIHsKLSAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscyh0cnVlLCAhIWZvdW5kKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cyh0cnVlLCAhIWZvdW5kLCBtZXNzYWdlKTsKIH0KIAogSW5zcGVjdG9yVGVzdC5zYWZlV3JhcCA9
IGZ1bmN0aW9uKGZ1bmMsIG9uZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0
d29yay1kaXNhYmxlLWNhY2hlLW1lbW9yeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg2YTI2
ZDQ3MzlkNjNmMTZiYjAyZTc0MDIzM2Q2OWRiYjZiNTI0NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNh
Y2hlLW1lbW9yeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMjY6IEZpcnN0IHR3byBpbWFnZXMgbG9hZGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDM2OiBEb25lLgorVGVzdHMgZGlzYWJsaW5nIGNhY2hlIGZyb20gaW5zcGVjdG9yLgorCisKK2h0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2Uu
cGhwP3R5cGU9aW1hZ2UmcmFuZG9tPTEmY2FjaGVkPTEKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9p
bnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2UmcmFuZG9t
PTEmY2FjaGVkPTEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNoZS1tZW1v
cnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMGU3NzM3MDQyY2MxMmRlMzFhMzQ3NTVjMWU2YTkyYjEyOTMx
YTc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0bWwKQEAgLTAsMCArMSw5MyBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vbmV0d29yay10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CitmdW5jdGlvbiBsb2FkSW1hZ2UoY2FsbGJhY2spCit7CisgICAgdmFyIGltYWdlID0gbmV3
IEltYWdlKCk7CisgICAgaW1hZ2Uub25sb2FkID0gY2FsbGJhY2s7CisgICAgaW1hZ2Uuc3JjID0g
InJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZyYW5kb209MSZjYWNoZWQ9MSI7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZSk7Cit9CisKK2Z1bmN0aW9uIGxvYWRE
YXRhKCkKK3sKKyAgICBsb2FkSW1hZ2UoaW1hZ2VMb2FkZWQxKTsKK30KKworZnVuY3Rpb24gaW1h
Z2VMb2FkZWQxKCkKK3sKKyAgICBsb2FkSW1hZ2UoaW1hZ2VMb2FkZWQyKTsKK30KKworZnVuY3Rp
b24gaW1hZ2VMb2FkZWQyKCkKK3sKKyAgICBjb25zb2xlLmxvZygiRmlyc3QgdHdvIGltYWdlcyBs
b2FkZWQuIik7Cit9CisKK2Z1bmN0aW9uIGNhY2hlRGlzYWJsZWQoKQoreworICAgIGxvYWRJbWFn
ZShhbGxJbWFnZXNMb2FkZWQpOworfQorCitmdW5jdGlvbiBhbGxJbWFnZXNMb2FkZWQoKQorewor
ICAgIGNvbnNvbGUubG9nKCJEb25lLiIpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJ
bnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlw
ZSwgImFkZE1lc3NhZ2UiLCBzdGVwMik7CisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFn
ZSgibG9hZERhdGEoKSIpOworCisgICAgZnVuY3Rpb24gc3RlcDIobXNnKQorICAgIHsKKyAgICAg
ICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQodHJ1ZSwgc3RlcDMpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHN0ZXAzKG1zZykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
U25pZmZlcihXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLCAiYWRkTWVzc2FnZSIs
IHN0ZXA0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2FjaGVEaXNh
YmxlZCgpIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQobXNnKQorICAgIHsKKyAgICAg
ICAgLy8gaW5zcGVjdG9yLXRlc3QuanMgYXBwZWFycyBpbiBuZXR3b3JrIHBhbmVsIG9jY2FzaW9u
YWxseSBpbiBTYWZhcmkgb24KKyAgICAgICAgLy8gTWFjLCBzbyBjaGVja2luZyB0d28gbGFzdCBy
ZXNvdXJjZXMuCisgICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoOworICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDJdOwor
ICAgICAgICB2YXIgcmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291
cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworICAgICAgICByZXNvdXJjZTEucmVxdWVzdENvbnRl
bnQoY29udGVudExvYWRlZCk7CisgICAgICAgIHJlc291cmNlMi5yZXF1ZXN0Q29udGVudChjb250
ZW50TG9hZGVkKTsKKyAgICB9CisKKyAgICB2YXIgY29udGVudExvYWRlZENvdW50ID0gMDsKKyAg
ICBmdW5jdGlvbiBjb250ZW50TG9hZGVkKCkKKyAgICB7CisgICAgICAgIGlmICgrK2NvbnRlbnRM
b2FkZWRDb3VudCAhPT0gMikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgcmVz
b3VyY2VzQ291bnQgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0
aDsKKyAgICAgICAgdmFyIHJlc291cmNlMSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5y
ZXNvdXJjZXNbcmVzb3VyY2VzQ291bnQgLSAyXTsKKyAgICAgICAgdmFyIHJlc291cmNlMiA9IFdl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbcmVzb3VyY2VzQ291bnQgLSAxXTsK
KworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXNvdXJjZTEudXJsKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UyLnVybCk7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0VHJ1ZShyZXNvdXJjZTEuY29udGVudCAhPT0gcmVzb3VyY2UyLmNvbnRl
bnQsICJTZWNvbmQgYW5kIHRoaXJkIHJlc291cmNlcyBkaWZmZXIiKTsKKyAgICAgICAgTmV0d29y
a0FnZW50LnNldENhY2hlRGlzYWJsZWQoZmFsc2UsIHN0ZXA1KTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBzdGVwNShtc2cpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVz
dCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorICAgIDxwPlRlc3RzIGRpc2FibGluZyBjYWNoZSBmcm9tIGluc3BlY3Rvci48L3A+Cis8
L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUt
Y2FjaGUteGhycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVmYTFmYjZhOTNjYTUwYjFlNTdi
OWQyZTg4N2UwYjBmMGE0YjI4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIzOiBGaXJzdCBY
SFIgbG9hZGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDMzOiBEb25lLgorVGVzdHMgZGlzYWJs
aW5nIGNhY2hlIGZyb20gaW5zcGVjdG9yLgorCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD9yYW5kb209MSZjYWNoZWQ9MQoraHR0
cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5w
aHA/cmFuZG9tPTEmY2FjaGVkPTEKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3JhbmRvbT0xJmNhY2hlZD0xCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNh
YmxlLWNhY2hlLXhocnMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjQyNmFh
YmJhNTcwMmI4ZjY3MTgxYTkwODE0ODY1MDQ4YWRmZGNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2Fj
aGUteGhycy5odG1sCkBAIC0wLDAgKzEsMTAyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9uZXR3
b3JrLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvYWRYSFIoY2FsbGJh
Y2spCit7CisgICAgZG9YSFIoIkdFVCIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3JhbmRvbT0x
JmNhY2hlZD0xIiwgdHJ1ZSwgY2FsbGJhY2spOworfQorCitmdW5jdGlvbiBsb2FkRGF0YSgpCit7
CisgICAgbG9hZFhIUih4aHJMb2FkZWQxKTsKK30KKworZnVuY3Rpb24geGhyTG9hZGVkMSgpCit7
CisgICAgbG9hZFhIUih4aHJMb2FkZWQyKTsKK30KKworZnVuY3Rpb24geGhyTG9hZGVkMigpCit7
CisgICAgY29uc29sZS5sb2coIkZpcnN0IFhIUiBsb2FkZWQuIik7Cit9CisKK2Z1bmN0aW9uIGNh
Y2hlRGlzYWJsZWQoKQoreworICAgIGxvYWRYSFIoYWxsWEhSc0xvYWRlZCk7Cit9CisKK2Z1bmN0
aW9uIGFsbFhIUnNMb2FkZWQoKQoreworICAgIGNvbnNvbGUubG9nKCJEb25lLiIpOworfQorCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICAvLyBTaW5jZSB0aGlzIHRlc3QgY291bGQgYmUgcnVuIHRv
Z2V0aGVyIHdpdGggb3RoZXIgaW5zcGVjdG9yIGJhY2tlbmQgY2FjaGUKKyAgICAvLyB0ZXN0cywg
d2UgbmVlZCB0byByZXNldCBzaXplIGxpbWl0cyB0byBkZWZhdWx0IG9uZXMuCisgICAgSW5zcGVj
dG9yVGVzdC5yZXNldEluc3BlY3RvclJlc291cmNlc0RhdGEoc3RlcDEpOworCisgICAgZnVuY3Rp
b24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYklu
c3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUsICJhZGRNZXNzYWdlIiwgc3RlcDIpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkRGF0YSgpIik7CisgICAgfQor
CisgICAgZnVuY3Rpb24gc3RlcDIobXNnKQorICAgIHsKKyAgICAgICAgTmV0d29ya0FnZW50LnNl
dENhY2hlRGlzYWJsZWQodHJ1ZSwgc3RlcDMpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAz
KG1zZykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0
b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLCAiYWRkTWVzc2FnZSIsIHN0ZXA0KTsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2FjaGVEaXNhYmxlZCgpIik7CisgICAgfQor
CisgICAgZnVuY3Rpb24gc3RlcDQobXNnKQorICAgIHsKKyAgICAgICAgLy8gaW5zcGVjdG9yLXRl
c3QuanMgYXBwZWFycyBpbiBuZXR3b3JrIHBhbmVsIG9jY2FzaW9uYWxseSBpbiBTYWZhcmkgb24K
KyAgICAgICAgLy8gTWFjLCBzbyBjaGVja2luZyB0d28gbGFzdCByZXNvdXJjZXMuCisgICAgICAg
IHZhciByZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJj
ZXMubGVuZ3RoOworICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDNdOworICAgICAgICB2YXIgcmVzb3Vy
Y2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3Vu
dCAtIDJdOworICAgICAgICB2YXIgcmVzb3VyY2UzID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3
b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworICAgICAgICByZXNvdXJjZTEucmVx
dWVzdENvbnRlbnQoY29udGVudExvYWRlZCk7CisgICAgICAgIHJlc291cmNlMi5yZXF1ZXN0Q29u
dGVudChjb250ZW50TG9hZGVkKTsKKyAgICAgICAgcmVzb3VyY2UzLnJlcXVlc3RDb250ZW50KGNv
bnRlbnRMb2FkZWQpOworICAgIH0KKworICAgIHZhciBjb250ZW50TG9hZGVkQ291bnQgPSAwOwor
ICAgIGZ1bmN0aW9uIGNvbnRlbnRMb2FkZWQoKQorICAgIHsKKyAgICAgICAgaWYgKCsrY29udGVu
dExvYWRlZENvdW50ICE9PSAzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBy
ZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVu
Z3RoOworICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3Jr
LnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDNdOworICAgICAgICB2YXIgcmVzb3VyY2UyID0g
V2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDJd
OworICAgICAgICB2YXIgcmVzb3VyY2UzID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJl
c291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworCisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KHJlc291cmNlMS51cmwpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChy
ZXNvdXJjZTIudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2Uz
LnVybCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShyZXNvdXJjZTEuY29udGVu
dCA9PT0gcmVzb3VyY2UyLmNvbnRlbnQsICJGaXJzdCBhbmQgc2Vjb25kIHJlc291cmNlcyBhcmUg
ZXF1YWwiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKHJlc291cmNlMi5jb250
ZW50ICE9PSByZXNvdXJjZTMuY29udGVudCwgIlNlY29uZCBhbmQgdGhpcmQgcmVzb3VyY2VzIGRp
ZmZlciIpOworICAgICAgICBOZXR3b3JrQWdlbnQuc2V0Q2FjaGVEaXNhYmxlZChmYWxzZSwgc3Rl
cDUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA1KG1zZykKKyAgICB7CisgICAgICAgIElu
c3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdHMgZGlzYWJsaW5nIGNhY2hl
IGZyb20gaW5zcGVjdG9yLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2Uu
cGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
cmVzb3VyY2UucGhwCmluZGV4IDNlMWYxODVlMWZkZTI2OGIyZWJmZWZhMWQwMDE3ZGMwOTM1MTdl
ZGIuLmMyYjZmMWNjY2VlMmNiYzhjNjM4OWU2ZjcxOGVmZTU5NTVmZjA2NDAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291
cmNlLnBocAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9yZXNvdXJjZS5waHAKQEAgLTgsMTkgKzgsMzcgQEAKICAgICAkanNjb250ZW50ID0g
JF9HRVRbImpzY29udGVudCJdOwogICAgICRjaHVua2VkID0gJF9HRVRbImNodW5rZWQiXTsKICAg
ICAkcmFuZG9tID0gJF9HRVRbInJhbmRvbSJdOwotCi0gICAgIyBFbmFibGUgZ3ppcCBjb21wcmVz
c2lvbiBpZiBuZWVkZWQKLSAgICBpZiAoJGd6aXApCi0gICAgICAgIG9iX3N0YXJ0KCJvYl9nemhh
bmRsZXIiKTsKKyAgICAkY2FjaGVkID0gJF9HRVRbImNhY2hlZCJdOwogCiAgICAgIyBXYWl0IGJl
Zm9yZSBzZW5kaW5nIHJlc3BvbnNlCiAgICAgaWYgKCR3YWl0KQogICAgICAgICB1c2xlZXAoJHdh
aXQgKiAxMDAwKTsKIAorICAgICMgRXhpdCBlYXJseSBpZiB3ZSByZXR1cm4gMzA0IGNvZGUuCisg
ICAgaWYgKCRjYWNoZWQgJiYgJF9TRVJWRVJbIkhUVFBfSUZfTU9ESUZJRURfU0lOQ0UiXSkgewor
ICAgICAgICBoZWFkZXIoIkhUVFAvMS4wIDMwNCBOb3QgTW9kaWZpZWQiKTsKKyAgICAgICAgZXhp
dDsKKyAgICB9CisKKyAgICAjIEVuYWJsZSBnemlwIGNvbXByZXNzaW9uIGlmIG5lZWRlZAorICAg
IGlmICgkZ3ppcCkKKyAgICAgICAgb2Jfc3RhcnQoIm9iX2d6aGFuZGxlciIpOworCiAgICAgIyBT
ZW5kIGhlYWRlcnMKLSAgICBoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEgRGVjIDIwMDMgMTY6MDA6
MDAgR01UIik7Ci0gICAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUs
IG11c3QtcmV2YWxpZGF0ZSIpOwotICAgIGhlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOworICAg
IGlmICgkY2FjaGVkKSB7CisgICAgICAgICRtYXhfYWdlID0gMTIgKiAzMSAqIDI0ICogNjAgKiA2
MDsgLy9vbmUgeWVhcgorICAgICAgICAkZXhwaXJlcyA9IGdtZGF0ZShEQVRFX1JGQzExMjMsIHRp
bWUoKSArICRtYXhfYWdlKTsKKyAgICAgICAgJGxhc3RfbW9kaWZpZWQgPSBnbWRhdGUoREFURV9S
RkMxMTIzLCB0aW1lKCkgLSAkbWF4X2FnZSk7CisKKyAgICAgICAgaGVhZGVyKCJDYWNoZS1Db250
cm9sOiBwdWJsaWMsIG1heC1hZ2U9IiAuIDUqJG1heF9hZ2UpOworICAgICAgICBoZWFkZXIoIkNh
Y2hlLWNvbnRyb2w6IG1heC1hZ2U9MCIpOworICAgICAgICBoZWFkZXIoIkV4cGlyZXM6ICIgLiAk
ZXhwaXJlcyk7CisgICAgICAgIGhlYWRlcigiTGFzdC1Nb2RpZmllZDogIiAuICRsYXN0X21vZGlm
aWVkKTsKKyAgICB9IGVsc2UgeworICAgICAgICBoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEgRGVj
IDIwMDMgMTY6MDA6MDAgR01UIik7CisgICAgICAgIGhlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8t
c3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUiKTsKKyAgICAgICAgaGVhZGVyKCJQcmFn
bWE6IG5vLWNhY2hlIik7CisgICAgfQogICAgIGlmICgkdHlwZSA9PSAianMiKQogICAgICAgICBo
ZWFkZXIoIkNvbnRlbnQtVHlwZTp0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9VVRGLTgiKTsKICAg
ICBlbHNlIGlmICgkdHlwZSA9PSAiaW1hZ2UiKQpAQCAtOTQsNiArMTEyLDggQEAgX19mb28oPD9w
aHAgZWNobygkanNkZWxheSk/Pik7CiAgICAgICAgICAgICAgICAgZmx1c2goKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGVjaG8oIndvcmxkIik7CisgICAgICAgICAgICBpZiAoJHJhbmRv
bSkKKyAgICAgICAgICAgICAgICBlY2hvKCI6ICIgLiByYW5kKCkpOwogICAgICAgICB9CiAgICAg
fQogPz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA2OWEwYjljYTVlYmUxYWNmYmE3MDhlY2YxMTlkZWYzZDJlNjgx
Njk3Li5iYzNiOTBhMzIyZDNmMjNmOThlNjM0YjRjNzU2MGFmYmI4M2E1MzZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDctMDggIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBvcnQgZm9yIGRp
c2FibGluZyBjYWNoZSBpbiB3ZWIgaW5zcGVjdG9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbAor
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6c2V0Q2FjaGVEaXNhYmxlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05l
dHdvcmtNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnBy
b3RvdHlwZS5pbmZsaWdodFJlc291cmNlRm9yVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
ZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuX2NhY2hlRGlzYWJsZWRTZXR0aW5nQ2hhbmdlZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TZXR0aW5ncyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5n
c1NjcmVlbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbik6CisKIDIw
MTEtMDctMDcgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFN3
aXRjaCBIaXRUZXN0UmVzdWx0IHRvIHRvIG5ldyBsYXlvdXQgdHlwZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA1ZTUxNDI4NDIxNWExZDg3NmRiMzU5YTY3MmIx
Mjc1OWEzZDQxYzEzLi5mZTNhYmVlNDQxYWNlZTA5MmRmNGY4OTI5Y2UzNTk5OGFlZGQ3ZDU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC01MDcsNyArNTA3LDE0
IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2xlYXJCcm93c2Vy
Q29va2llcyIsCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNsZWFycyBicm93c2Vy
IGNvb2tpZXMuIgotICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAibmFtZSI6ICJzZXRDYWNoZURpc2FibGVkIiwKKyAgICAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYWNo
ZURpc2FibGVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJDYWNoZSBkaXNh
YmxlZCBzdGF0ZS4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJUb2dnbGVzIGlnbm9yaW5nIGNhY2hlIGZvciBlYWNoIHJlcXVlc3QuIElmIDxj
b2RlPnRydWU8L2NvZGU+LCBjYWNoZSB3aWxsIG5vdCBiZSB1c2VkLiIgCisgICAgICAgICAgICB9
LAogICAgICAgICBdLAogICAgICAgICAiZXZlbnRzIjogWwogICAgICAgICAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmlu
ZGV4IGFmZmMyNWYwYjY0MDg1NzA4Nzk0MmY1MmM1MmExZWNhOGQ1OGMwYTIuLjRlNjMwZDc4YjBl
ZGQyMDE1NzhhYzViZWYwMjhmOGE0NGY2MjMyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAK
ICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdl
bnRzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Jlc291cmNlc0RhdGEuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCkBAIC03Miw2ICs3Myw3IEBAIG5hbWVzcGFj
ZSBSZXNvdXJjZUFnZW50U3RhdGUgewogc3RhdGljIGNvbnN0IGNoYXIgcmVzb3VyY2VBZ2VudEVu
YWJsZWRbXSA9ICJyZXNvdXJjZUFnZW50RW5hYmxlZCI7CiBzdGF0aWMgY29uc3QgY2hhciBleHRy
YVJlcXVlc3RIZWFkZXJzW10gPSAiZXh0cmFSZXF1ZXN0SGVhZGVycyI7CiBzdGF0aWMgY29uc3Qg
Y2hhciBiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWRbXSA9ICJiYWNrZ3JvdW5kRXZl
bnRzQ29sbGVjdGlvbkVuYWJsZWQiOworc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVEaXNhYmxlZFtd
ID0gImNhY2hlRGlzYWJsZWQiOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNl
dEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKQEAgLTIxNCw2ICsyMTYsMTIg
QEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudEwKICAgICByZXF1ZXN0LnNldFJlcG9ydExvYWRUaW1p
bmcodHJ1ZSk7CiAgICAgcmVxdWVzdC5zZXRSZXBvcnRSYXdIZWFkZXJzKHRydWUpOwogCisgICAg
aWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpjYWNoZURpc2FibGVk
KSkgeworICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVE
YXRhKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIlByYWdtYSIsICJuby1j
YWNoZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiQ2FjaGUtQ29udHJv
bCIsICJuby1jYWNoZSIpOworICAgIH0KKwogICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNh
bGxTdGFjayA9IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxT
dGFja1NpemVUb0NhcHR1cmUsIHRydWUpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2Fs
bFN0YWNrVmFsdWU7CiAgICAgaWYgKGNhbGxTdGFjaykKQEAgLTQyMSwxMiArNDI5LDE1IEBAIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZW5hYmxlKCkKICAgICAgICAgcmV0dXJuOwogICAg
IG1fc3RhdGUtPnNldEJvb2xlYW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpyZXNvdXJjZUFnZW50RW5h
YmxlZCwgdHJ1ZSk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JSZXNv
dXJjZUFnZW50KHRoaXMpOworCisgICAgbWVtb3J5Q2FjaGUoKS0+c2V0RGlzYWJsZWQobV9zdGF0
ZS0+Z2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmNhY2hlRGlzYWJsZWQpKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKIHsKICAg
ICBtX3N0YXRlLT5zZXRCb29sZWFuKFJlc291cmNlQWdlbnRTdGF0ZTo6cmVzb3VyY2VBZ2VudEVu
YWJsZWQsIGZhbHNlKTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclJl
c291cmNlQWdlbnQoMCk7CisgICAgbWVtb3J5Q2FjaGUoKS0+c2V0RGlzYWJsZWQoZmFsc2UpOwog
fQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldFVzZXJBZ2VudE92ZXJyaWRlKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCkBAIC00ODUsNiArNDk2LDEyIEBA
IHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2xlYXJCcm93c2VyQ29va2llcyhFcnJvclN0
cmluZyopCiAgICAgbV9jbGllbnQtPmNsZWFyQnJvd3NlckNvb2tpZXMoKTsKIH0KIAordm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRDYWNoZURpc2FibGVkKEVycm9yU3RyaW5nKiBlcnJv
ciwgYm9vbCBjYWNoZURpc2FibGVkKQoreworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oUmVzb3Vy
Y2VBZ2VudFN0YXRlOjpjYWNoZURpc2FibGVkLCBjYWNoZURpc2FibGVkKTsKKyAgICBtZW1vcnlD
YWNoZSgpLT5zZXREaXNhYmxlZChjYWNoZURpc2FibGVkKTsKK30KKwogdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjptYWluRnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikK
IHsKICAgICBtX3Jlc291cmNlc0RhdGEtPmNsZWFyKG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2Fk
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5oCmluZGV4IDkwMzJiNDc5YzBkMjM3YjExY2MwNzFhZjFiMzg0MjExNWY0ZTYzNWMuLmY1
ZWFmMmQ4Yjk4MjhjZTllNjQ1NjVjNDNhZTk5YWM4MDc5ZTVlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtMTI3LDYgKzEy
Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcq
KTsKICAgICB2b2lkIGNsZWFyQnJvd3NlckNvb2tpZXMoRXJyb3JTdHJpbmcqKTsKKyAgICB2b2lk
IHNldENhY2hlRGlzYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGNhY2hlRGlzYWJsZWQpOwogCiBw
cml2YXRlOgogICAgIEluc3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyos
IEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvckNsaWVudCosIEluc3BlY3RvclN0YXRlKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtN
YW5hZ2VyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFu
YWdlci5qcwppbmRleCAxZjM1NjZmOTdiYjY5NTdhNGZjZDdmMWRmOGFkZTM5YzA4OWMzY2ZjLi4w
NGRlMjNlNjdiMTZkZjEzZTNiZDI4ODM5MTIxNmFlODY2MjZlYzIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMKQEAgLTMy
LDcgKzMyLDExIEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsK
ICAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAgICAgdGhpcy5fZGlzcGF0Y2hl
ciA9IG5ldyBXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIodGhpcyk7CisgICAgaWYgKFdl
Ykluc3BlY3Rvci5zZXR0aW5ncy5jYWNoZURpc2FibGVkLmdldCgpKQorICAgICAgICBOZXR3b3Jr
QWdlbnQuc2V0Q2FjaGVEaXNhYmxlZCh0cnVlKTsKICAgICBOZXR3b3JrQWdlbnQuZW5hYmxlKCk7
CisgICAgCisgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNhY2hlRGlzYWJsZWQuYWRkQ2hhbmdl
TGlzdGVuZXIodGhpcy5fY2FjaGVEaXNhYmxlZFNldHRpbmdDaGFuZ2VkLmJpbmQodGhpcykpOwog
fQogCiBXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcyA9IHsKQEAgLTYyLDYg
KzY2LDExIEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAg
aW5mbGlnaHRSZXNvdXJjZUZvclVSTDogZnVuY3Rpb24odXJsKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2Rpc3BhdGNoZXIuX2luZmxpZ2h0UmVzb3VyY2VzQnlVUkxbdXJsXTsKKyAgICB9
LAorICAgIAorICAgIF9jYWNoZURpc2FibGVkU2V0dGluZ0NoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIHsKKyAgICAgICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQoZXZlbnQuZGF0
YSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NldHRpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
ZXR0aW5ncy5qcwppbmRleCA3MWZjNjQ1NzQ5OGM0OWVjNTljZTRkMTk1ZGZkZDllYTYwOTRjMTQw
Li4zMjhkZTRhMDJkOGI1NjBjOGU0OTMzNTkzZGI1ZjNhYjZmNTE1NmNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKQEAgLTgyLDYgKzgyLDcg
QEAgV2ViSW5zcGVjdG9yLlNldHRpbmdzID0gZnVuY3Rpb24oKQogICAgIHRoaXMuaW5zdGFsbEFw
cGxpY2F0aW9uU2V0dGluZygiZG9tQnJlYWtwb2ludHMiLCBbXSk7CiAgICAgdGhpcy5pbnN0YWxs
QXBwbGljYXRpb25TZXR0aW5nKCJ4aHJCcmVha3BvaW50cyIsIFtdKTsKICAgICB0aGlzLmluc3Rh
bGxBcHBsaWNhdGlvblNldHRpbmcoIndvcmtlckluc3BlY3Rpb25FbmFibGVkIiwgW10pOworICAg
IHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygiY2FjaGVEaXNhYmxlZCIsIGZhbHNlKTsK
IAogICAgIC8vIElmIHRoZXJlIGFyZSB0b28gbWFueSBicmVha3BvaW50cyBpbiBhIHN0b3JhZ2Us
IGl0IGlzIGxpa2VseSBkdWUgdG8gYSByZWNlbnQgYnVnIHRoYXQgY2F1c2VkCiAgICAgLy8gcGVy
aW9kaWNhbCBicmVha3BvaW50cyBkdXBsaWNhdGlvbiBsZWFkaW5nIHRvIGluc3BlY3RvciBzbG93
bmVzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0
dGluZ3NTY3JlZW4uanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRp
bmdzU2NyZWVuLmpzCmluZGV4IGJkZjQ5YjZjZDdhYWQ4NzI1YTUyZDg4MGU5Y2E0ZDExNDAwZDIx
NWYuLjdhNDBmODdlYmFlMGUzMWM3YjcyYTQ5OWE0YTBhZmQ4MTAzYjJiZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcwpA
QCAtNDUsNiArNDUsOSBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4gPSBmdW5jdGlvbigp
CiAgICAgICAgIFsgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNvbG9yRm9ybWF0LlJH
QiwgIlJHQjogcmdiKDEyOCwgMjU1LCAyNTUpIiBdLAogICAgICAgICBbIFdlYkluc3BlY3Rvci5T
dHlsZXNTaWRlYmFyUGFuZS5Db2xvckZvcm1hdC5IU0wsICJIU0w6IGhzbCgzMDAsIDgwJSwgOTAl
KSIgXSBdLCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY29sb3JGb3JtYXQpKTsKIAorICAgIHAgPSB0
aGlzLl9hcHBlbmRTZWN0aW9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiTmV0d29yayIpKTsKKyAg
ICBwLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkRpc2FibGUgY2FjaGUiKSwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNhY2hlRGlz
YWJsZWQpKTsKKwogICAgIHAgPSB0aGlzLl9hcHBlbmRTZWN0aW9uKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQ29uc29sZSIpKTsKICAgICBwLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNoZWNrYm94
U2V0dGluZyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvZyBYTUxIdHRwUmVxdWVzdHMiKSwgV2Vi
SW5zcGVjdG9yLnNldHRpbmdzLm1vbml0b3JpbmdYSFJFbmFibGVkKSk7CiAgICAgcC5hcHBlbmRD
aGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRpbmcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQ
cmVzZXJ2ZSBsb2cgdXBvbiBuYXZpZ2F0aW9uIiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5wcmVz
ZXJ2ZUNvbnNvbGVMb2cpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100126</attachid>
            <date>2011-07-08 09:19:57 -0700</date>
            <delta_ts>2011-07-11 06:25:15 -0700</delta_ts>
            <desc>Patch (mac fix)</desc>
            <filename>bug-64097-20110708201955.patch</filename>
            <type>text/plain</type>
            <size>20133</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA2MTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZDNkZDZkMjEyMTk3N2ZiMzU4NmE4
ZTAxYzczNjkxZjIxZmZhNDQzLi4xMTg4YjFkYjMxNWU4NTkyM2M0MTg4NmIxYWI2NjA4ZjM3NWQ5
ZTFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDctMDggIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBv
cnQgZm9yIGRpc2FibGluZyBjYWNoZSBpbiB3ZWIgaW5zcGVjdG9yLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwOTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0KToKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNo
ZS1tZW1vcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNoZS1tZW1vcnkuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2Fj
aGUteGhycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhw
OgorCiAyMDExLTA3LTA4ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZC4gTW92aW5nIHRlc3QgZXhwZWN0YXRpb24gZnJvbSBwbGF0Zm9y
bS1zcGVjaWZpYyB0byBnZW5lcmljLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwppbmRleCA2YzM1ZjgwYmRkMGM0ZTIxNGE4MzI1MzE0
ZjlhZmQ0ODk5MmQ2YjU2Li5lYjhlZjhmMjQxZmY5ZTYzMTIyZjU1NzZiMzMyM2RhM2FiZjc2N2Jm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3It
dGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3It
dGVzdC5qcwpAQCAtMjQ1LDcgKzI0NSw3IEBAIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzID0g
ZnVuY3Rpb24oZXhwZWN0ZWQsIGZvdW5kLCBtZXNzYWdlKQogCiBJbnNwZWN0b3JUZXN0LmFzc2Vy
dFRydWUgPSBmdW5jdGlvbihmb3VuZCwgbWVzc2FnZSkKIHsKLSAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscyh0cnVlLCAhIWZvdW5kKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cyh0cnVlLCAhIWZvdW5kLCBtZXNzYWdlKTsKIH0KIAogSW5zcGVjdG9yVGVzdC5zYWZlV3JhcCA9
IGZ1bmN0aW9uKGZ1bmMsIG9uZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0
d29yay1kaXNhYmxlLWNhY2hlLW1lbW9yeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg2YTI2
ZDQ3MzlkNjNmMTZiYjAyZTc0MDIzM2Q2OWRiYjZiNTI0NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNh
Y2hlLW1lbW9yeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMjY6IEZpcnN0IHR3byBpbWFnZXMgbG9hZGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDM2OiBEb25lLgorVGVzdHMgZGlzYWJsaW5nIGNhY2hlIGZyb20gaW5zcGVjdG9yLgorCisKK2h0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2Uu
cGhwP3R5cGU9aW1hZ2UmcmFuZG9tPTEmY2FjaGVkPTEKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9p
bnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2UmcmFuZG9t
PTEmY2FjaGVkPTEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNoZS1tZW1v
cnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMGU3NzM3MDQyY2MxMmRlMzFhMzQ3NTVjMWU2YTkyYjEyOTMx
YTc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0bWwKQEAgLTAsMCArMSw5MyBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vbmV0d29yay10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CitmdW5jdGlvbiBsb2FkSW1hZ2UoY2FsbGJhY2spCit7CisgICAgdmFyIGltYWdlID0gbmV3
IEltYWdlKCk7CisgICAgaW1hZ2Uub25sb2FkID0gY2FsbGJhY2s7CisgICAgaW1hZ2Uuc3JjID0g
InJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZyYW5kb209MSZjYWNoZWQ9MSI7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZSk7Cit9CisKK2Z1bmN0aW9uIGxvYWRE
YXRhKCkKK3sKKyAgICBsb2FkSW1hZ2UoaW1hZ2VMb2FkZWQxKTsKK30KKworZnVuY3Rpb24gaW1h
Z2VMb2FkZWQxKCkKK3sKKyAgICBsb2FkSW1hZ2UoaW1hZ2VMb2FkZWQyKTsKK30KKworZnVuY3Rp
b24gaW1hZ2VMb2FkZWQyKCkKK3sKKyAgICBjb25zb2xlLmxvZygiRmlyc3QgdHdvIGltYWdlcyBs
b2FkZWQuIik7Cit9CisKK2Z1bmN0aW9uIGNhY2hlRGlzYWJsZWQoKQoreworICAgIGxvYWRJbWFn
ZShhbGxJbWFnZXNMb2FkZWQpOworfQorCitmdW5jdGlvbiBhbGxJbWFnZXNMb2FkZWQoKQorewor
ICAgIGNvbnNvbGUubG9nKCJEb25lLiIpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJ
bnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlw
ZSwgImFkZE1lc3NhZ2UiLCBzdGVwMik7CisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFn
ZSgibG9hZERhdGEoKSIpOworCisgICAgZnVuY3Rpb24gc3RlcDIobXNnKQorICAgIHsKKyAgICAg
ICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQodHJ1ZSwgc3RlcDMpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHN0ZXAzKG1zZykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
U25pZmZlcihXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLCAiYWRkTWVzc2FnZSIs
IHN0ZXA0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2FjaGVEaXNh
YmxlZCgpIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQobXNnKQorICAgIHsKKyAgICAg
ICAgLy8gaW5zcGVjdG9yLXRlc3QuanMgYXBwZWFycyBpbiBuZXR3b3JrIHBhbmVsIG9jY2FzaW9u
YWxseSBpbiBTYWZhcmkgb24KKyAgICAgICAgLy8gTWFjLCBzbyBjaGVja2luZyB0d28gbGFzdCBy
ZXNvdXJjZXMuCisgICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoOworICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDJdOwor
ICAgICAgICB2YXIgcmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291
cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworICAgICAgICByZXNvdXJjZTEucmVxdWVzdENvbnRl
bnQoY29udGVudExvYWRlZCk7CisgICAgICAgIHJlc291cmNlMi5yZXF1ZXN0Q29udGVudChjb250
ZW50TG9hZGVkKTsKKyAgICB9CisKKyAgICB2YXIgY29udGVudExvYWRlZENvdW50ID0gMDsKKyAg
ICBmdW5jdGlvbiBjb250ZW50TG9hZGVkKCkKKyAgICB7CisgICAgICAgIGlmICgrK2NvbnRlbnRM
b2FkZWRDb3VudCAhPT0gMikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgcmVz
b3VyY2VzQ291bnQgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0
aDsKKyAgICAgICAgdmFyIHJlc291cmNlMSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5y
ZXNvdXJjZXNbcmVzb3VyY2VzQ291bnQgLSAyXTsKKyAgICAgICAgdmFyIHJlc291cmNlMiA9IFdl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbcmVzb3VyY2VzQ291bnQgLSAxXTsK
KworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXNvdXJjZTEudXJsKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UyLnVybCk7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0VHJ1ZShyZXNvdXJjZTEuY29udGVudCAhPT0gcmVzb3VyY2UyLmNvbnRl
bnQsICJTZWNvbmQgYW5kIHRoaXJkIHJlc291cmNlcyBkaWZmZXIiKTsKKyAgICAgICAgTmV0d29y
a0FnZW50LnNldENhY2hlRGlzYWJsZWQoZmFsc2UsIHN0ZXA1KTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBzdGVwNShtc2cpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVz
dCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorICAgIDxwPlRlc3RzIGRpc2FibGluZyBjYWNoZSBmcm9tIGluc3BlY3Rvci48L3A+Cis8
L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUt
Y2FjaGUteGhycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVmYTFmYjZhOTNjYTUwYjFlNTdi
OWQyZTg4N2UwYjBmMGE0YjI4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIzOiBGaXJzdCBY
SFIgbG9hZGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDMzOiBEb25lLgorVGVzdHMgZGlzYWJs
aW5nIGNhY2hlIGZyb20gaW5zcGVjdG9yLgorCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD9yYW5kb209MSZjYWNoZWQ9MQoraHR0
cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5w
aHA/cmFuZG9tPTEmY2FjaGVkPTEKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3JhbmRvbT0xJmNhY2hlZD0xCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNh
YmxlLWNhY2hlLXhocnMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjQyNmFh
YmJhNTcwMmI4ZjY3MTgxYTkwODE0ODY1MDQ4YWRmZGNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2Fj
aGUteGhycy5odG1sCkBAIC0wLDAgKzEsMTAyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9uZXR3
b3JrLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvYWRYSFIoY2FsbGJh
Y2spCit7CisgICAgZG9YSFIoIkdFVCIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3JhbmRvbT0x
JmNhY2hlZD0xIiwgdHJ1ZSwgY2FsbGJhY2spOworfQorCitmdW5jdGlvbiBsb2FkRGF0YSgpCit7
CisgICAgbG9hZFhIUih4aHJMb2FkZWQxKTsKK30KKworZnVuY3Rpb24geGhyTG9hZGVkMSgpCit7
CisgICAgbG9hZFhIUih4aHJMb2FkZWQyKTsKK30KKworZnVuY3Rpb24geGhyTG9hZGVkMigpCit7
CisgICAgY29uc29sZS5sb2coIkZpcnN0IFhIUiBsb2FkZWQuIik7Cit9CisKK2Z1bmN0aW9uIGNh
Y2hlRGlzYWJsZWQoKQoreworICAgIGxvYWRYSFIoYWxsWEhSc0xvYWRlZCk7Cit9CisKK2Z1bmN0
aW9uIGFsbFhIUnNMb2FkZWQoKQoreworICAgIGNvbnNvbGUubG9nKCJEb25lLiIpOworfQorCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICAvLyBTaW5jZSB0aGlzIHRlc3QgY291bGQgYmUgcnVuIHRv
Z2V0aGVyIHdpdGggb3RoZXIgaW5zcGVjdG9yIGJhY2tlbmQgY2FjaGUKKyAgICAvLyB0ZXN0cywg
d2UgbmVlZCB0byByZXNldCBzaXplIGxpbWl0cyB0byBkZWZhdWx0IG9uZXMuCisgICAgSW5zcGVj
dG9yVGVzdC5yZXNldEluc3BlY3RvclJlc291cmNlc0RhdGEoc3RlcDEpOworCisgICAgZnVuY3Rp
b24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYklu
c3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUsICJhZGRNZXNzYWdlIiwgc3RlcDIpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkRGF0YSgpIik7CisgICAgfQor
CisgICAgZnVuY3Rpb24gc3RlcDIobXNnKQorICAgIHsKKyAgICAgICAgTmV0d29ya0FnZW50LnNl
dENhY2hlRGlzYWJsZWQodHJ1ZSwgc3RlcDMpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAz
KG1zZykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0
b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLCAiYWRkTWVzc2FnZSIsIHN0ZXA0KTsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2FjaGVEaXNhYmxlZCgpIik7CisgICAgfQor
CisgICAgZnVuY3Rpb24gc3RlcDQobXNnKQorICAgIHsKKyAgICAgICAgLy8gaW5zcGVjdG9yLXRl
c3QuanMgYXBwZWFycyBpbiBuZXR3b3JrIHBhbmVsIG9jY2FzaW9uYWxseSBpbiBTYWZhcmkgb24K
KyAgICAgICAgLy8gTWFjLCBzbyBjaGVja2luZyB0d28gbGFzdCByZXNvdXJjZXMuCisgICAgICAg
IHZhciByZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJj
ZXMubGVuZ3RoOworICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDNdOworICAgICAgICB2YXIgcmVzb3Vy
Y2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3Vu
dCAtIDJdOworICAgICAgICB2YXIgcmVzb3VyY2UzID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3
b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworICAgICAgICByZXNvdXJjZTEucmVx
dWVzdENvbnRlbnQoY29udGVudExvYWRlZCk7CisgICAgICAgIHJlc291cmNlMi5yZXF1ZXN0Q29u
dGVudChjb250ZW50TG9hZGVkKTsKKyAgICAgICAgcmVzb3VyY2UzLnJlcXVlc3RDb250ZW50KGNv
bnRlbnRMb2FkZWQpOworICAgIH0KKworICAgIHZhciBjb250ZW50TG9hZGVkQ291bnQgPSAwOwor
ICAgIGZ1bmN0aW9uIGNvbnRlbnRMb2FkZWQoKQorICAgIHsKKyAgICAgICAgaWYgKCsrY29udGVu
dExvYWRlZENvdW50ICE9PSAzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBy
ZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVu
Z3RoOworICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3Jr
LnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDNdOworICAgICAgICB2YXIgcmVzb3VyY2UyID0g
V2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDJd
OworICAgICAgICB2YXIgcmVzb3VyY2UzID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJl
c291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworCisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KHJlc291cmNlMS51cmwpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChy
ZXNvdXJjZTIudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2Uz
LnVybCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShyZXNvdXJjZTEuY29udGVu
dCA9PT0gcmVzb3VyY2UyLmNvbnRlbnQsICJGaXJzdCBhbmQgc2Vjb25kIHJlc291cmNlcyBhcmUg
ZXF1YWwiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKHJlc291cmNlMi5jb250
ZW50ICE9PSByZXNvdXJjZTMuY29udGVudCwgIlNlY29uZCBhbmQgdGhpcmQgcmVzb3VyY2VzIGRp
ZmZlciIpOworICAgICAgICBOZXR3b3JrQWdlbnQuc2V0Q2FjaGVEaXNhYmxlZChmYWxzZSwgc3Rl
cDUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA1KG1zZykKKyAgICB7CisgICAgICAgIElu
c3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdHMgZGlzYWJsaW5nIGNhY2hl
IGZyb20gaW5zcGVjdG9yLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2Uu
cGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
cmVzb3VyY2UucGhwCmluZGV4IDNlMWYxODVlMWZkZTI2OGIyZWJmZWZhMWQwMDE3ZGMwOTM1MTdl
ZGIuLmMyYjZmMWNjY2VlMmNiYzhjNjM4OWU2ZjcxOGVmZTU5NTVmZjA2NDAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291
cmNlLnBocAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9yZXNvdXJjZS5waHAKQEAgLTgsMTkgKzgsMzcgQEAKICAgICAkanNjb250ZW50ID0g
JF9HRVRbImpzY29udGVudCJdOwogICAgICRjaHVua2VkID0gJF9HRVRbImNodW5rZWQiXTsKICAg
ICAkcmFuZG9tID0gJF9HRVRbInJhbmRvbSJdOwotCi0gICAgIyBFbmFibGUgZ3ppcCBjb21wcmVz
c2lvbiBpZiBuZWVkZWQKLSAgICBpZiAoJGd6aXApCi0gICAgICAgIG9iX3N0YXJ0KCJvYl9nemhh
bmRsZXIiKTsKKyAgICAkY2FjaGVkID0gJF9HRVRbImNhY2hlZCJdOwogCiAgICAgIyBXYWl0IGJl
Zm9yZSBzZW5kaW5nIHJlc3BvbnNlCiAgICAgaWYgKCR3YWl0KQogICAgICAgICB1c2xlZXAoJHdh
aXQgKiAxMDAwKTsKIAorICAgICMgRXhpdCBlYXJseSBpZiB3ZSByZXR1cm4gMzA0IGNvZGUuCisg
ICAgaWYgKCRjYWNoZWQgJiYgJF9TRVJWRVJbIkhUVFBfSUZfTU9ESUZJRURfU0lOQ0UiXSkgewor
ICAgICAgICBoZWFkZXIoIkhUVFAvMS4wIDMwNCBOb3QgTW9kaWZpZWQiKTsKKyAgICAgICAgZXhp
dDsKKyAgICB9CisKKyAgICAjIEVuYWJsZSBnemlwIGNvbXByZXNzaW9uIGlmIG5lZWRlZAorICAg
IGlmICgkZ3ppcCkKKyAgICAgICAgb2Jfc3RhcnQoIm9iX2d6aGFuZGxlciIpOworCiAgICAgIyBT
ZW5kIGhlYWRlcnMKLSAgICBoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEgRGVjIDIwMDMgMTY6MDA6
MDAgR01UIik7Ci0gICAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUs
IG11c3QtcmV2YWxpZGF0ZSIpOwotICAgIGhlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOworICAg
IGlmICgkY2FjaGVkKSB7CisgICAgICAgICRtYXhfYWdlID0gMTIgKiAzMSAqIDI0ICogNjAgKiA2
MDsgLy9vbmUgeWVhcgorICAgICAgICAkZXhwaXJlcyA9IGdtZGF0ZShEQVRFX1JGQzExMjMsIHRp
bWUoKSArICRtYXhfYWdlKTsKKyAgICAgICAgJGxhc3RfbW9kaWZpZWQgPSBnbWRhdGUoREFURV9S
RkMxMTIzLCB0aW1lKCkgLSAkbWF4X2FnZSk7CisKKyAgICAgICAgaGVhZGVyKCJDYWNoZS1Db250
cm9sOiBwdWJsaWMsIG1heC1hZ2U9IiAuIDUqJG1heF9hZ2UpOworICAgICAgICBoZWFkZXIoIkNh
Y2hlLWNvbnRyb2w6IG1heC1hZ2U9MCIpOworICAgICAgICBoZWFkZXIoIkV4cGlyZXM6ICIgLiAk
ZXhwaXJlcyk7CisgICAgICAgIGhlYWRlcigiTGFzdC1Nb2RpZmllZDogIiAuICRsYXN0X21vZGlm
aWVkKTsKKyAgICB9IGVsc2UgeworICAgICAgICBoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEgRGVj
IDIwMDMgMTY6MDA6MDAgR01UIik7CisgICAgICAgIGhlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8t
c3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUiKTsKKyAgICAgICAgaGVhZGVyKCJQcmFn
bWE6IG5vLWNhY2hlIik7CisgICAgfQogICAgIGlmICgkdHlwZSA9PSAianMiKQogICAgICAgICBo
ZWFkZXIoIkNvbnRlbnQtVHlwZTp0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9VVRGLTgiKTsKICAg
ICBlbHNlIGlmICgkdHlwZSA9PSAiaW1hZ2UiKQpAQCAtOTQsNiArMTEyLDggQEAgX19mb28oPD9w
aHAgZWNobygkanNkZWxheSk/Pik7CiAgICAgICAgICAgICAgICAgZmx1c2goKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGVjaG8oIndvcmxkIik7CisgICAgICAgICAgICBpZiAoJHJhbmRv
bSkKKyAgICAgICAgICAgICAgICBlY2hvKCI6ICIgLiByYW5kKCkpOwogICAgICAgICB9CiAgICAg
fQogPz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA2OWEwYjljYTVlYmUxYWNmYmE3MDhlY2YxMTlkZWYzZDJlNjgx
Njk3Li5iYzNiOTBhMzIyZDNmMjNmOThlNjM0YjRjNzU2MGFmYmI4M2E1MzZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDctMDggIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBvcnQgZm9yIGRp
c2FibGluZyBjYWNoZSBpbiB3ZWIgaW5zcGVjdG9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbAor
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6c2V0Q2FjaGVEaXNhYmxlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05l
dHdvcmtNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnBy
b3RvdHlwZS5pbmZsaWdodFJlc291cmNlRm9yVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
ZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuX2NhY2hlRGlzYWJsZWRTZXR0aW5nQ2hhbmdlZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TZXR0aW5ncyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5n
c1NjcmVlbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbik6CisKIDIw
MTEtMDctMDcgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFN3
aXRjaCBIaXRUZXN0UmVzdWx0IHRvIHRvIG5ldyBsYXlvdXQgdHlwZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA1ZTUxNDI4NDIxNWExZDg3NmRiMzU5YTY3MmIx
Mjc1OWEzZDQxYzEzLi5mZTNhYmVlNDQxYWNlZTA5MmRmNGY4OTI5Y2UzNTk5OGFlZGQ3ZDU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC01MDcsNyArNTA3LDE0
IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2xlYXJCcm93c2Vy
Q29va2llcyIsCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNsZWFycyBicm93c2Vy
IGNvb2tpZXMuIgotICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAibmFtZSI6ICJzZXRDYWNoZURpc2FibGVkIiwKKyAgICAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYWNo
ZURpc2FibGVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJDYWNoZSBkaXNh
YmxlZCBzdGF0ZS4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJUb2dnbGVzIGlnbm9yaW5nIGNhY2hlIGZvciBlYWNoIHJlcXVlc3QuIElmIDxj
b2RlPnRydWU8L2NvZGU+LCBjYWNoZSB3aWxsIG5vdCBiZSB1c2VkLiIgCisgICAgICAgICAgICB9
LAogICAgICAgICBdLAogICAgICAgICAiZXZlbnRzIjogWwogICAgICAgICAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmlu
ZGV4IGFmZmMyNWYwYjY0MDg1NzA4Nzk0MmY1MmM1MmExZWNhOGQ1OGMwYTIuLjQ1MDA2ZmZlMjVj
MTUwMTY4YjQ1MzY2NzhjYzU5MTBjZTAwNDY2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAK
ICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdl
bnRzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Jlc291cmNlc0RhdGEuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCkBAIC03Miw2ICs3Myw3IEBAIG5hbWVzcGFj
ZSBSZXNvdXJjZUFnZW50U3RhdGUgewogc3RhdGljIGNvbnN0IGNoYXIgcmVzb3VyY2VBZ2VudEVu
YWJsZWRbXSA9ICJyZXNvdXJjZUFnZW50RW5hYmxlZCI7CiBzdGF0aWMgY29uc3QgY2hhciBleHRy
YVJlcXVlc3RIZWFkZXJzW10gPSAiZXh0cmFSZXF1ZXN0SGVhZGVycyI7CiBzdGF0aWMgY29uc3Qg
Y2hhciBiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWRbXSA9ICJiYWNrZ3JvdW5kRXZl
bnRzQ29sbGVjdGlvbkVuYWJsZWQiOworc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVEaXNhYmxlZFtd
ID0gImNhY2hlRGlzYWJsZWQiOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNl
dEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKQEAgLTIxNCw2ICsyMTYsMTIg
QEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudEwKICAgICByZXF1ZXN0LnNldFJlcG9ydExvYWRUaW1p
bmcodHJ1ZSk7CiAgICAgcmVxdWVzdC5zZXRSZXBvcnRSYXdIZWFkZXJzKHRydWUpOwogCisgICAg
aWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpjYWNoZURpc2FibGVk
KSkgeworICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVE
YXRhKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIlByYWdtYSIsICJuby1j
YWNoZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiQ2FjaGUtQ29udHJv
bCIsICJuby1jYWNoZSIpOworICAgIH0KKwogICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNh
bGxTdGFjayA9IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxT
dGFja1NpemVUb0NhcHR1cmUsIHRydWUpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2Fs
bFN0YWNrVmFsdWU7CiAgICAgaWYgKGNhbGxTdGFjaykKQEAgLTQyMSwxMiArNDI5LDE1IEBAIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZW5hYmxlKCkKICAgICAgICAgcmV0dXJuOwogICAg
IG1fc3RhdGUtPnNldEJvb2xlYW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpyZXNvdXJjZUFnZW50RW5h
YmxlZCwgdHJ1ZSk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JSZXNv
dXJjZUFnZW50KHRoaXMpOworCisgICAgbWVtb3J5Q2FjaGUoKS0+c2V0RGlzYWJsZWQobV9zdGF0
ZS0+Z2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmNhY2hlRGlzYWJsZWQpKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKIHsKICAg
ICBtX3N0YXRlLT5zZXRCb29sZWFuKFJlc291cmNlQWdlbnRTdGF0ZTo6cmVzb3VyY2VBZ2VudEVu
YWJsZWQsIGZhbHNlKTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclJl
c291cmNlQWdlbnQoMCk7CisgICAgbWVtb3J5Q2FjaGUoKS0+c2V0RGlzYWJsZWQoZmFsc2UpOwog
fQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldFVzZXJBZ2VudE92ZXJyaWRlKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCkBAIC00ODUsNiArNDk2LDEyIEBA
IHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2xlYXJCcm93c2VyQ29va2llcyhFcnJvclN0
cmluZyopCiAgICAgbV9jbGllbnQtPmNsZWFyQnJvd3NlckNvb2tpZXMoKTsKIH0KIAordm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRDYWNoZURpc2FibGVkKEVycm9yU3RyaW5nKiwgYm9v
bCBjYWNoZURpc2FibGVkKQoreworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oUmVzb3VyY2VBZ2Vu
dFN0YXRlOjpjYWNoZURpc2FibGVkLCBjYWNoZURpc2FibGVkKTsKKyAgICBtZW1vcnlDYWNoZSgp
LT5zZXREaXNhYmxlZChjYWNoZURpc2FibGVkKTsKK30KKwogdm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjptYWluRnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAg
ICBtX3Jlc291cmNlc0RhdGEtPmNsZWFyKG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
CmluZGV4IDkwMzJiNDc5YzBkMjM3YjExY2MwNzFhZjFiMzg0MjExNWY0ZTYzNWMuLmY1ZWFmMmQ4
Yjk4MjhjZTllNjQ1NjVjNDNhZTk5YWM4MDc5ZTVlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtMTI3LDYgKzEyNyw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcqKTsKICAg
ICB2b2lkIGNsZWFyQnJvd3NlckNvb2tpZXMoRXJyb3JTdHJpbmcqKTsKKyAgICB2b2lkIHNldENh
Y2hlRGlzYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGNhY2hlRGlzYWJsZWQpOwogCiBwcml2YXRl
OgogICAgIEluc3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3Bl
Y3RvclBhZ2VBZ2VudCosIEluc3BlY3RvckNsaWVudCosIEluc3BlY3RvclN0YXRlKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2Vy
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5q
cwppbmRleCAxZjM1NjZmOTdiYjY5NTdhNGZjZDdmMWRmOGFkZTM5YzA4OWMzY2ZjLi4wNGRlMjNl
NjdiMTZkZjEzZTNiZDI4ODM5MTIxNmFlODY2MjZlYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMKQEAgLTMyLDcgKzMy
LDExIEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsKICAgICBX
ZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAgICAgdGhpcy5fZGlzcGF0Y2hlciA9IG5l
dyBXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIodGhpcyk7CisgICAgaWYgKFdlYkluc3Bl
Y3Rvci5zZXR0aW5ncy5jYWNoZURpc2FibGVkLmdldCgpKQorICAgICAgICBOZXR3b3JrQWdlbnQu
c2V0Q2FjaGVEaXNhYmxlZCh0cnVlKTsKICAgICBOZXR3b3JrQWdlbnQuZW5hYmxlKCk7CisgICAg
CisgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNhY2hlRGlzYWJsZWQuYWRkQ2hhbmdlTGlzdGVu
ZXIodGhpcy5fY2FjaGVEaXNhYmxlZFNldHRpbmdDaGFuZ2VkLmJpbmQodGhpcykpOwogfQogCiBX
ZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcyA9IHsKQEAgLTYyLDYgKzY2LDEx
IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgaW5mbGln
aHRSZXNvdXJjZUZvclVSTDogZnVuY3Rpb24odXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2Rpc3BhdGNoZXIuX2luZmxpZ2h0UmVzb3VyY2VzQnlVUkxbdXJsXTsKKyAgICB9LAorICAg
IAorICAgIF9jYWNoZURpc2FibGVkU2V0dGluZ0NoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IHsKKyAgICAgICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQoZXZlbnQuZGF0YSk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NldHRpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5n
cy5qcwppbmRleCA3MWZjNjQ1NzQ5OGM0OWVjNTljZTRkMTk1ZGZkZDllYTYwOTRjMTQwLi4zMjhk
ZTRhMDJkOGI1NjBjOGU0OTMzNTkzZGI1ZjNhYjZmNTE1NmNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKQEAgLTgyLDYgKzgyLDcgQEAgV2Vi
SW5zcGVjdG9yLlNldHRpbmdzID0gZnVuY3Rpb24oKQogICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0
aW9uU2V0dGluZygiZG9tQnJlYWtwb2ludHMiLCBbXSk7CiAgICAgdGhpcy5pbnN0YWxsQXBwbGlj
YXRpb25TZXR0aW5nKCJ4aHJCcmVha3BvaW50cyIsIFtdKTsKICAgICB0aGlzLmluc3RhbGxBcHBs
aWNhdGlvblNldHRpbmcoIndvcmtlckluc3BlY3Rpb25FbmFibGVkIiwgW10pOworICAgIHRoaXMu
aW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygiY2FjaGVEaXNhYmxlZCIsIGZhbHNlKTsKIAogICAg
IC8vIElmIHRoZXJlIGFyZSB0b28gbWFueSBicmVha3BvaW50cyBpbiBhIHN0b3JhZ2UsIGl0IGlz
IGxpa2VseSBkdWUgdG8gYSByZWNlbnQgYnVnIHRoYXQgY2F1c2VkCiAgICAgLy8gcGVyaW9kaWNh
bCBicmVha3BvaW50cyBkdXBsaWNhdGlvbiBsZWFkaW5nIHRvIGluc3BlY3RvciBzbG93bmVzcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NT
Y3JlZW4uanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzU2Ny
ZWVuLmpzCmluZGV4IGJkZjQ5YjZjZDdhYWQ4NzI1YTUyZDg4MGU5Y2E0ZDExNDAwZDIxNWYuLjdh
NDBmODdlYmFlMGUzMWM3YjcyYTQ5OWE0YTBhZmQ4MTAzYjJiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcwpAQCAtNDUs
NiArNDUsOSBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4gPSBmdW5jdGlvbigpCiAgICAg
ICAgIFsgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNvbG9yRm9ybWF0LlJHQiwgIlJH
QjogcmdiKDEyOCwgMjU1LCAyNTUpIiBdLAogICAgICAgICBbIFdlYkluc3BlY3Rvci5TdHlsZXNT
aWRlYmFyUGFuZS5Db2xvckZvcm1hdC5IU0wsICJIU0w6IGhzbCgzMDAsIDgwJSwgOTAlKSIgXSBd
LCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY29sb3JGb3JtYXQpKTsKIAorICAgIHAgPSB0aGlzLl9h
cHBlbmRTZWN0aW9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiTmV0d29yayIpKTsKKyAgICBwLmFw
cGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkRpc2FibGUgY2FjaGUiKSwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNhY2hlRGlzYWJsZWQp
KTsKKwogICAgIHAgPSB0aGlzLl9hcHBlbmRTZWN0aW9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Q29uc29sZSIpKTsKICAgICBwLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0dGlu
ZyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvZyBYTUxIdHRwUmVxdWVzdHMiKSwgV2ViSW5zcGVj
dG9yLnNldHRpbmdzLm1vbml0b3JpbmdYSFJFbmFibGVkKSk7CiAgICAgcC5hcHBlbmRDaGlsZCh0
aGlzLl9jcmVhdGVDaGVja2JveFNldHRpbmcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcmVzZXJ2
ZSBsb2cgdXBvbiBuYXZpZ2F0aW9uIiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5wcmVzZXJ2ZUNv
bnNvbGVMb2cpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100288</attachid>
            <date>2011-07-11 06:25:24 -0700</date>
            <delta_ts>2011-07-11 06:29:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64097-20110711172521.patch</filename>
            <type>text/plain</type>
            <size>23529</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA3MzIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZjVmYjFjY2IyMGI0M2JkZWYwYmFm
MDM4ODA5ZWJiYmFhOGNhODIwLi40NTU2OGIxMGY3NzM4MTVlYzlhMTlmNWRkNWFkYWQzZTI1NGE5
YTQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDctMTEgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBv
cnQgZm9yIGRpc2FibGluZyBjYWNoZSBpbiB3ZWIgaW5zcGVjdG9yLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwOTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0KToKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNo
ZS1tZW1vcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNoZS1tZW1vcnkuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2Fj
aGUteGhycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhw
OgorCiAyMDExLTA3LTExICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW1F0XVtNYWNdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwppbmRleCA2YzM1Zjgw
YmRkMGM0ZTIxNGE4MzI1MzE0ZjlhZmQ0ODk5MmQ2YjU2Li5lYjhlZjhmMjQxZmY5ZTYzMTIyZjU1
NzZiMzMyM2RhM2FiZjc2N2JmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwpAQCAtMjQ1LDcgKzI0NSw3IEBAIEluc3BlY3RvclRl
c3QuYXNzZXJ0RXF1YWxzID0gZnVuY3Rpb24oZXhwZWN0ZWQsIGZvdW5kLCBtZXNzYWdlKQogCiBJ
bnNwZWN0b3JUZXN0LmFzc2VydFRydWUgPSBmdW5jdGlvbihmb3VuZCwgbWVzc2FnZSkKIHsKLSAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWZvdW5kKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWZvdW5kLCBtZXNzYWdlKTsKIH0KIAogSW5zcGVj
dG9yVGVzdC5zYWZlV3JhcCA9IGZ1bmN0aW9uKGZ1bmMsIG9uZXhjZXB0aW9uKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2Fi
bGUtY2FjaGUtbWVtb3J5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLW1lbW9yeS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTg2YTI2ZDQ3MzlkNjNmMTZiYjAyZTc0MDIzM2Q2OWRiYjZiNTI0NwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay1kaXNhYmxlLWNhY2hlLW1lbW9yeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBA
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjY6IEZpcnN0IHR3byBpbWFnZXMgbG9hZGVkLgorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDM2OiBEb25lLgorVGVzdHMgZGlzYWJsaW5nIGNhY2hlIGZyb20g
aW5zcGVjdG9yLgorCisKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2UmcmFuZG9tPTEmY2FjaGVkPTEKK2h0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhw
P3R5cGU9aW1hZ2UmcmFuZG9tPTEmY2FjaGVkPTEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmst
ZGlzYWJsZS1jYWNoZS1tZW1vcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGU3NzM3MDQyY2MxMmRlMzFh
MzQ3NTVjMWU2YTkyYjEyOTMxYTc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0
bWwKQEAgLTAsMCArMSw5MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNw
ZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vbmV0d29yay10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2FkSW1hZ2UoY2FsbGJhY2spCit7Cisg
ICAgdmFyIGltYWdlID0gbmV3IEltYWdlKCk7CisgICAgaW1hZ2Uub25sb2FkID0gY2FsbGJhY2s7
CisgICAgaW1hZ2Uuc3JjID0gInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZyYW5k
b209MSZjYWNoZWQ9MSI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZSk7Cit9
CisKK2Z1bmN0aW9uIGxvYWREYXRhKCkKK3sKKyAgICBsb2FkSW1hZ2UoaW1hZ2VMb2FkZWQxKTsK
K30KKworZnVuY3Rpb24gaW1hZ2VMb2FkZWQxKCkKK3sKKyAgICBsb2FkSW1hZ2UoaW1hZ2VMb2Fk
ZWQyKTsKK30KKworZnVuY3Rpb24gaW1hZ2VMb2FkZWQyKCkKK3sKKyAgICBjb25zb2xlLmxvZygi
Rmlyc3QgdHdvIGltYWdlcyBsb2FkZWQuIik7Cit9CisKK2Z1bmN0aW9uIGNhY2hlRGlzYWJsZWQo
KQoreworICAgIGxvYWRJbWFnZShhbGxJbWFnZXNMb2FkZWQpOworfQorCitmdW5jdGlvbiBhbGxJ
bWFnZXNMb2FkZWQoKQoreworICAgIGNvbnNvbGUubG9nKCJEb25lLiIpOworfQorCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkNv
bnNvbGVWaWV3LnByb3RvdHlwZSwgImFkZE1lc3NhZ2UiLCBzdGVwMik7CisgICAgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZERhdGEoKSIpOworCisgICAgZnVuY3Rpb24gc3RlcDIo
bXNnKQorICAgIHsKKyAgICAgICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQodHJ1ZSwg
c3RlcDMpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKG1zZykKKyAgICB7CisgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90
eXBlLCAiYWRkTWVzc2FnZSIsIHN0ZXA0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluUGFnZSgiY2FjaGVEaXNhYmxlZCgpIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQo
bXNnKQorICAgIHsKKyAgICAgICAgLy8gaW5zcGVjdG9yLXRlc3QuanMgYXBwZWFycyBpbiBuZXR3
b3JrIHBhbmVsIG9jY2FzaW9uYWxseSBpbiBTYWZhcmkgb24KKyAgICAgICAgLy8gTWFjLCBzbyBj
aGVja2luZyB0d28gbGFzdCByZXNvdXJjZXMuCisgICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9
IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoOworICAgICAgICB2
YXIgcmVzb3VyY2UxID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNv
dXJjZXNDb3VudCAtIDJdOworICAgICAgICB2YXIgcmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBh
bmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworICAgICAgICByZXNv
dXJjZTEucmVxdWVzdENvbnRlbnQoY29udGVudExvYWRlZCk7CisgICAgICAgIHJlc291cmNlMi5y
ZXF1ZXN0Q29udGVudChjb250ZW50TG9hZGVkKTsKKyAgICB9CisKKyAgICB2YXIgY29udGVudExv
YWRlZENvdW50ID0gMDsKKyAgICBmdW5jdGlvbiBjb250ZW50TG9hZGVkKCkKKyAgICB7CisgICAg
ICAgIGlmICgrK2NvbnRlbnRMb2FkZWRDb3VudCAhPT0gMikKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB2YXIgcmVzb3VyY2VzQ291bnQgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdv
cmsucmVzb3VyY2VzLmxlbmd0aDsKKyAgICAgICAgdmFyIHJlc291cmNlMSA9IFdlYkluc3BlY3Rv
ci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbcmVzb3VyY2VzQ291bnQgLSAyXTsKKyAgICAgICAg
dmFyIHJlc291cmNlMiA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbcmVz
b3VyY2VzQ291bnQgLSAxXTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXNv
dXJjZTEudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UyLnVy
bCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShyZXNvdXJjZTEuY29udGVudCAh
PT0gcmVzb3VyY2UyLmNvbnRlbnQsICJTZWNvbmQgYW5kIHRoaXJkIHJlc291cmNlcyBkaWZmZXIi
KTsKKyAgICAgICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQoZmFsc2UsIHN0ZXA1KTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNShtc2cpCisgICAgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3RzIGRpc2FibGluZyBjYWNoZSBmcm9t
IGluc3BlY3Rvci48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXho
cnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLWRpc2FibGUtY2FjaGUteGhycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVm
YTFmYjZhOTNjYTUwYjFlNTdiOWQyZTg4N2UwYjBmMGE0YjI4YwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxl
LWNhY2hlLXhocnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDIzOiBGaXJzdCBYSFIgbG9hZGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDMzOiBE
b25lLgorVGVzdHMgZGlzYWJsaW5nIGNhY2hlIGZyb20gaW5zcGVjdG9yLgorCitodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD9yYW5k
b209MSZjYWNoZWQ9MQoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9yZXNvdXJjZS5waHA/cmFuZG9tPTEmY2FjaGVkPTEKK2h0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3JhbmRvbT0xJmNh
Y2hlZD0xCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44YjQyNmFhYmJhNTcwMmI4ZjY3MTgxYTkwODE0ODY1MDQ4YWRmZGNmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9u
ZXR3b3JrLWRpc2FibGUtY2FjaGUteGhycy5odG1sCkBAIC0wLDAgKzEsMTAyIEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0
aW9uIGxvYWRYSFIoY2FsbGJhY2spCit7CisgICAgZG9YSFIoIkdFVCIsICJyZXNvdXJjZXMvcmVz
b3VyY2UucGhwP3JhbmRvbT0xJmNhY2hlZD0xIiwgdHJ1ZSwgY2FsbGJhY2spOworfQorCitmdW5j
dGlvbiBsb2FkRGF0YSgpCit7CisgICAgbG9hZFhIUih4aHJMb2FkZWQxKTsKK30KKworZnVuY3Rp
b24geGhyTG9hZGVkMSgpCit7CisgICAgbG9hZFhIUih4aHJMb2FkZWQyKTsKK30KKworZnVuY3Rp
b24geGhyTG9hZGVkMigpCit7CisgICAgY29uc29sZS5sb2coIkZpcnN0IFhIUiBsb2FkZWQuIik7
Cit9CisKK2Z1bmN0aW9uIGNhY2hlRGlzYWJsZWQoKQoreworICAgIGxvYWRYSFIoYWxsWEhSc0xv
YWRlZCk7Cit9CisKK2Z1bmN0aW9uIGFsbFhIUnNMb2FkZWQoKQoreworICAgIGNvbnNvbGUubG9n
KCJEb25lLiIpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICAvLyBTaW5jZSB0aGlzIHRl
c3QgY291bGQgYmUgcnVuIHRvZ2V0aGVyIHdpdGggb3RoZXIgaW5zcGVjdG9yIGJhY2tlbmQgY2Fj
aGUKKyAgICAvLyB0ZXN0cywgd2UgbmVlZCB0byByZXNldCBzaXplIGxpbWl0cyB0byBkZWZhdWx0
IG9uZXMuCisgICAgSW5zcGVjdG9yVGVzdC5yZXNldEluc3BlY3RvclJlc291cmNlc0RhdGEoc3Rl
cDEpOworCisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUsICJhZGRNZXNz
YWdlIiwgc3RlcDIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2Fk
RGF0YSgpIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDIobXNnKQorICAgIHsKKyAgICAg
ICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQodHJ1ZSwgc3RlcDMpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHN0ZXAzKG1zZykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
U25pZmZlcihXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLCAiYWRkTWVzc2FnZSIs
IHN0ZXA0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2FjaGVEaXNh
YmxlZCgpIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQobXNnKQorICAgIHsKKyAgICAg
ICAgLy8gaW5zcGVjdG9yLXRlc3QuanMgYXBwZWFycyBpbiBuZXR3b3JrIHBhbmVsIG9jY2FzaW9u
YWxseSBpbiBTYWZhcmkgb24KKyAgICAgICAgLy8gTWFjLCBzbyBjaGVja2luZyB0d28gbGFzdCBy
ZXNvdXJjZXMuCisgICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoOworICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDNdOwor
ICAgICAgICB2YXIgcmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291
cmNlc1tyZXNvdXJjZXNDb3VudCAtIDJdOworICAgICAgICB2YXIgcmVzb3VyY2UzID0gV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworICAg
ICAgICByZXNvdXJjZTEucmVxdWVzdENvbnRlbnQoY29udGVudExvYWRlZCk7CisgICAgICAgIHJl
c291cmNlMi5yZXF1ZXN0Q29udGVudChjb250ZW50TG9hZGVkKTsKKyAgICAgICAgcmVzb3VyY2Uz
LnJlcXVlc3RDb250ZW50KGNvbnRlbnRMb2FkZWQpOworICAgIH0KKworICAgIHZhciBjb250ZW50
TG9hZGVkQ291bnQgPSAwOworICAgIGZ1bmN0aW9uIGNvbnRlbnRMb2FkZWQoKQorICAgIHsKKyAg
ICAgICAgaWYgKCsrY29udGVudExvYWRlZENvdW50ICE9PSAzKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXNvdXJjZXMubGVuZ3RoOworICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2ViSW5zcGVj
dG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDNdOworICAgICAg
ICB2YXIgcmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1ty
ZXNvdXJjZXNDb3VudCAtIDJdOworICAgICAgICB2YXIgcmVzb3VyY2UzID0gV2ViSW5zcGVjdG9y
LnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworCisgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHJlc291cmNlMS51cmwpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdChyZXNvdXJjZTIudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQocmVzb3VyY2UzLnVybCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1
ZShyZXNvdXJjZTEuY29udGVudCA9PT0gcmVzb3VyY2UyLmNvbnRlbnQsICJGaXJzdCBhbmQgc2Vj
b25kIHJlc291cmNlcyBhcmUgZXF1YWwiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRU
cnVlKHJlc291cmNlMi5jb250ZW50ICE9PSByZXNvdXJjZTMuY29udGVudCwgIlNlY29uZCBhbmQg
dGhpcmQgcmVzb3VyY2VzIGRpZmZlciIpOworICAgICAgICBOZXR3b3JrQWdlbnQuc2V0Q2FjaGVE
aXNhYmxlZChmYWxzZSwgc3RlcDUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA1KG1zZykK
KyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVz
dHMgZGlzYWJsaW5nIGNhY2hlIGZyb20gaW5zcGVjdG9yLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvcmVzb3VyY2UucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwCmluZGV4IDNlMWYxODVlMWZkZTI2OGIyZWJm
ZWZhMWQwMDE3ZGMwOTM1MTdlZGIuLmMyYjZmMWNjY2VlMmNiYzhjNjM4OWU2ZjcxOGVmZTU5NTVm
ZjA2NDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHAKQEAgLTgsMTkgKzgsMzcgQEAK
ICAgICAkanNjb250ZW50ID0gJF9HRVRbImpzY29udGVudCJdOwogICAgICRjaHVua2VkID0gJF9H
RVRbImNodW5rZWQiXTsKICAgICAkcmFuZG9tID0gJF9HRVRbInJhbmRvbSJdOwotCi0gICAgIyBF
bmFibGUgZ3ppcCBjb21wcmVzc2lvbiBpZiBuZWVkZWQKLSAgICBpZiAoJGd6aXApCi0gICAgICAg
IG9iX3N0YXJ0KCJvYl9nemhhbmRsZXIiKTsKKyAgICAkY2FjaGVkID0gJF9HRVRbImNhY2hlZCJd
OwogCiAgICAgIyBXYWl0IGJlZm9yZSBzZW5kaW5nIHJlc3BvbnNlCiAgICAgaWYgKCR3YWl0KQog
ICAgICAgICB1c2xlZXAoJHdhaXQgKiAxMDAwKTsKIAorICAgICMgRXhpdCBlYXJseSBpZiB3ZSBy
ZXR1cm4gMzA0IGNvZGUuCisgICAgaWYgKCRjYWNoZWQgJiYgJF9TRVJWRVJbIkhUVFBfSUZfTU9E
SUZJRURfU0lOQ0UiXSkgeworICAgICAgICBoZWFkZXIoIkhUVFAvMS4wIDMwNCBOb3QgTW9kaWZp
ZWQiKTsKKyAgICAgICAgZXhpdDsKKyAgICB9CisKKyAgICAjIEVuYWJsZSBnemlwIGNvbXByZXNz
aW9uIGlmIG5lZWRlZAorICAgIGlmICgkZ3ppcCkKKyAgICAgICAgb2Jfc3RhcnQoIm9iX2d6aGFu
ZGxlciIpOworCiAgICAgIyBTZW5kIGhlYWRlcnMKLSAgICBoZWFkZXIoIkV4cGlyZXM6IFRodSwg
MDEgRGVjIDIwMDMgMTY6MDA6MDAgR01UIik7Ci0gICAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBu
by1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSIpOwotICAgIGhlYWRlcigiUHJhZ21h
OiBuby1jYWNoZSIpOworICAgIGlmICgkY2FjaGVkKSB7CisgICAgICAgICRtYXhfYWdlID0gMTIg
KiAzMSAqIDI0ICogNjAgKiA2MDsgLy9vbmUgeWVhcgorICAgICAgICAkZXhwaXJlcyA9IGdtZGF0
ZShEQVRFX1JGQzExMjMsIHRpbWUoKSArICRtYXhfYWdlKTsKKyAgICAgICAgJGxhc3RfbW9kaWZp
ZWQgPSBnbWRhdGUoREFURV9SRkMxMTIzLCB0aW1lKCkgLSAkbWF4X2FnZSk7CisKKyAgICAgICAg
aGVhZGVyKCJDYWNoZS1Db250cm9sOiBwdWJsaWMsIG1heC1hZ2U9IiAuIDUqJG1heF9hZ2UpOwor
ICAgICAgICBoZWFkZXIoIkNhY2hlLWNvbnRyb2w6IG1heC1hZ2U9MCIpOworICAgICAgICBoZWFk
ZXIoIkV4cGlyZXM6ICIgLiAkZXhwaXJlcyk7CisgICAgICAgIGhlYWRlcigiTGFzdC1Nb2RpZmll
ZDogIiAuICRsYXN0X21vZGlmaWVkKTsKKyAgICB9IGVsc2UgeworICAgICAgICBoZWFkZXIoIkV4
cGlyZXM6IFRodSwgMDEgRGVjIDIwMDMgMTY6MDA6MDAgR01UIik7CisgICAgICAgIGhlYWRlcigi
Q2FjaGUtQ29udHJvbDogbm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUiKTsKKyAg
ICAgICAgaGVhZGVyKCJQcmFnbWE6IG5vLWNhY2hlIik7CisgICAgfQogICAgIGlmICgkdHlwZSA9
PSAianMiKQogICAgICAgICBoZWFkZXIoIkNvbnRlbnQtVHlwZTp0ZXh0L2phdmFzY3JpcHQ7IGNo
YXJzZXQ9VVRGLTgiKTsKICAgICBlbHNlIGlmICgkdHlwZSA9PSAiaW1hZ2UiKQpAQCAtOTQsNiAr
MTEyLDggQEAgX19mb28oPD9waHAgZWNobygkanNkZWxheSk/Pik7CiAgICAgICAgICAgICAgICAg
Zmx1c2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVjaG8oIndvcmxkIik7CisgICAg
ICAgICAgICBpZiAoJHJhbmRvbSkKKyAgICAgICAgICAgICAgICBlY2hvKCI6ICIgLiByYW5kKCkp
OwogICAgICAgICB9CiAgICAgfQogPz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NWRhZjdkZjgzODJjNzA2ZTk0
YjEyMjdiM2Q2OTFkMTM0ZjFiYzUwLi42MzczNmU1ODRhYmViM2FjNTg2MzlmOWUzYjk4ODQyMDc2
NzMwOTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDctMTEgIFZzZXZvbG9k
IFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QWRkIHN1cHBvcnQgZm9yIGRpc2FibGluZyBjYWNoZSBpbiB3ZWIgaW5zcGVjdG9yLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwOTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxl
LWNhY2hlLXhocnMuaHRtbAorCisgICAgICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJp
bmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclJlc291cmNlQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6c2V0Q2FjaGVEaXNhYmxlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L05ldHdvcmtNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2Vy
LnByb3RvdHlwZS5pbmZsaWdodFJlc291cmNlRm9yVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuX2NhY2hlRGlzYWJsZWRTZXR0aW5nQ2hhbmdlZCk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TZXR0aW5ncyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0
aW5nc1NjcmVlbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbik6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUNhY2hlOjpzZXREaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNo
ZTo6c2V0RGlzYWJsZWRCeUluc3BlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNo
ZTo6ZGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmV2aWN0UmVzb3Vy
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpkb0V2aWN0UmVzb3VyY2VzKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaDoKKwogMjAxMS0wNy0xMSAgTXVz
dGFmaXp1ciBSYWhhbWFuICA8bXVzdGFmLmhlcmVAZ21haWwuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEphbWVzIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRW5nbGlz
aC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDYyZjQ5NTkwMjZiOTcwMTIwMzBmYjNlYzU0NTVi
NjVhOWEzZTYxOTIuLjMxYjRmOWMwYTNiOWM3NTU5YWIzNmMyOGIzYzE1ZjM5YjBjODY4ZjcgMTAw
NjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzgKd2NtVis+ME5NWXgrWEpCNzFGK2RjbGlmbE4z
MWF8WjBBbTFYMEEtV0BMTEM4UGxndCh+dik0bzRzV3k1Sz9mP0opCgpkZWx0YSAxNApXY21aMipo
azRzPTxfJE5VSCNAdUJUP3FnPVIwcDV7CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uCmluZGV4IDY4NmFhNGQ1NGNjMGEzMjJkODAwMGRmM2YzNjJmNjI2YzQ5YjU5ZWMuLjlm
NzViOThmM2UzMzZhMTg5YzdkYzk1YzJlYmIzMDA5ZDhlZmY2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTUwNyw3ICs1MDcsMTQgQEAKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJjbGVhckJyb3dzZXJDb29raWVzIiwKICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2xlYXJzIGJyb3dzZXIgY29va2llcy4iCi0gICAg
ICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICJuYW1lIjogInNldENhY2hlRGlzYWJsZWQiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNhY2hlRGlzYWJsZWQiLCAidHlw
ZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIkNhY2hlIGRpc2FibGVkIHN0YXRlLiIgfQor
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRvZ2ds
ZXMgaWdub3JpbmcgY2FjaGUgZm9yIGVhY2ggcmVxdWVzdC4gSWYgPGNvZGU+dHJ1ZTwvY29kZT4s
IGNhY2hlIHdpbGwgbm90IGJlIHVzZWQuIiAKKyAgICAgICAgICAgIH0sCiAgICAgICAgIF0sCiAg
ICAgICAgICJldmVudHMiOiBbCiAgICAgICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggYWZmYzI1ZjBiNjQw
ODU3MDg3OTQyZjUyYzUyYTFlY2E4ZDU4YzBhMi4uNWZiZGVlZDgxMzIyZDY2YzZjNGIwZWNjZDll
MWY1MjMzMjI0N2RkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVz
b3VyY2VzRGF0YS5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJl
c291cmNlRXJyb3IuaCIKQEAgLTcyLDYgKzczLDcgQEAgbmFtZXNwYWNlIFJlc291cmNlQWdlbnRT
dGF0ZSB7CiBzdGF0aWMgY29uc3QgY2hhciByZXNvdXJjZUFnZW50RW5hYmxlZFtdID0gInJlc291
cmNlQWdlbnRFbmFibGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyIGV4dHJhUmVxdWVzdEhlYWRlcnNb
XSA9ICJleHRyYVJlcXVlc3RIZWFkZXJzIjsKIHN0YXRpYyBjb25zdCBjaGFyIGJhY2tncm91bmRF
dmVudHNDb2xsZWN0aW9uRW5hYmxlZFtdID0gImJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5h
YmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZURpc2FibGVkW10gPSAiY2FjaGVEaXNhYmxl
ZCI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVj
dG9yRnJvbnRlbmQqIGZyb250ZW5kKQpAQCAtMjE0LDYgKzIxNiwxMiBAQCB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IERvY3VtZW50TAogICAgIHJlcXVlc3Quc2V0UmVwb3J0TG9hZFRpbWluZyh0cnVlKTsKICAgICBy
ZXF1ZXN0LnNldFJlcG9ydFJhd0hlYWRlcnModHJ1ZSk7CiAKKyAgICBpZiAobV9zdGF0ZS0+Z2V0
Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmNhY2hlRGlzYWJsZWQpKSB7CisgICAgICAgIHJl
cXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOworICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiUHJhZ21hIiwgIm5vLWNhY2hlIik7CisgICAgICAg
IHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJDYWNoZS1Db250cm9sIiwgIm5vLWNhY2hlIik7
CisgICAgfQorCiAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrID0gY3JlYXRl
U2NyaXB0Q2FsbFN0YWNrKFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVy
ZSwgdHJ1ZSk7CiAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBjYWxsU3RhY2tWYWx1ZTsKICAg
ICBpZiAoY2FsbFN0YWNrKQpAQCAtNDIxLDEyICs0MjksMTUgQEAgdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjplbmFibGUoKQogICAgICAgICByZXR1cm47CiAgICAgbV9zdGF0ZS0+c2V0Qm9v
bGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OnJlc291cmNlQWdlbnRFbmFibGVkLCB0cnVlKTsKICAg
ICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclJlc291cmNlQWdlbnQodGhpcyk7
CisKKyAgICBtZW1vcnlDYWNoZSgpLT5zZXREaXNhYmxlZEJ5SW5zcGVjdG9yKG1fc3RhdGUtPmdl
dEJvb2xlYW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpjYWNoZURpc2FibGVkKSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiB7CiAgICAgbV9z
dGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OnJlc291cmNlQWdlbnRFbmFibGVk
LCBmYWxzZSk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KDApOworICAgIG1lbW9yeUNhY2hlKCktPnNldERpc2FibGVkQnlJbnNwZWN0b3IoZmFs
c2UpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldFVzZXJBZ2VudE92ZXJy
aWRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCkBAIC00ODUsNiArNDk2
LDEyIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2xlYXJCcm93c2VyQ29va2llcyhF
cnJvclN0cmluZyopCiAgICAgbV9jbGllbnQtPmNsZWFyQnJvd3NlckNvb2tpZXMoKTsKIH0KIAor
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRDYWNoZURpc2FibGVkKEVycm9yU3RyaW5n
KiwgYm9vbCBjYWNoZURpc2FibGVkKQoreworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oUmVzb3Vy
Y2VBZ2VudFN0YXRlOjpjYWNoZURpc2FibGVkLCBjYWNoZURpc2FibGVkKTsKKyAgICBtZW1vcnlD
YWNoZSgpLT5zZXREaXNhYmxlZEJ5SW5zcGVjdG9yKGNhY2hlRGlzYWJsZWQpOworfQorCiB2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRlZChEb2N1bWVudExvYWRl
ciogbG9hZGVyKQogewogICAgIG1fcmVzb3VyY2VzRGF0YS0+Y2xlYXIobV9wYWdlQWdlbnQtPmxv
YWRlcklkKGxvYWRlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggOTAzMmI0NzljMGQyMzdiMTFjYzA3MWFmMWIzODQyMTE1
ZjRlNjM1Yy4uZjVlYWYyZDhiOTgyOGNlOWU2NDU2NWM0M2FlOTlhYzgwNzllNWViMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBA
IC0xMjcsNiArMTI3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckJyb3dzZXJDYWNoZShF
cnJvclN0cmluZyopOwogICAgIHZvaWQgY2xlYXJCcm93c2VyQ29va2llcyhFcnJvclN0cmluZyop
OworICAgIHZvaWQgc2V0Q2FjaGVEaXNhYmxlZChFcnJvclN0cmluZyosIGJvb2wgY2FjaGVEaXNh
YmxlZCk7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yQ2xpZW50KiwgSW5zcGVj
dG9yU3RhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTmV0d29ya01hbmFnZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L05ldHdvcmtNYW5hZ2VyLmpzCmluZGV4IDFmMzU2NmY5N2JiNjk1N2E0ZmNkN2YxZGY4YWRlMzlj
MDg5YzNjZmMuLjA0ZGUyM2U2N2IxNmRmMTNlM2JkMjg4MzkxMjE2YWU4NjYyNmVjMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdl
ci5qcwpAQCAtMzIsNyArMzIsMTEgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyID0gZnVu
Y3Rpb24oKQogewogICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKICAgICB0aGlz
Ll9kaXNwYXRjaGVyID0gbmV3IFdlYkluc3BlY3Rvci5OZXR3b3JrRGlzcGF0Y2hlcih0aGlzKTsK
KyAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNhY2hlRGlzYWJsZWQuZ2V0KCkpCisgICAg
ICAgIE5ldHdvcmtBZ2VudC5zZXRDYWNoZURpc2FibGVkKHRydWUpOwogICAgIE5ldHdvcmtBZ2Vu
dC5lbmFibGUoKTsKKyAgICAKKyAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY2FjaGVEaXNhYmxl
ZC5hZGRDaGFuZ2VMaXN0ZW5lcih0aGlzLl9jYWNoZURpc2FibGVkU2V0dGluZ0NoYW5nZWQuYmlu
ZCh0aGlzKSk7CiB9CiAKIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5FdmVudFR5cGVzID0g
ewpAQCAtNjIsNiArNjYsMTEgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlw
ZSA9IHsKICAgICBpbmZsaWdodFJlc291cmNlRm9yVVJMOiBmdW5jdGlvbih1cmwpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5faW5mbGlnaHRSZXNvdXJjZXNCeVVSTFt1
cmxdOworICAgIH0sCisgICAgCisgICAgX2NhY2hlRGlzYWJsZWRTZXR0aW5nQ2hhbmdlZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBOZXR3b3JrQWdlbnQuc2V0Q2FjaGVEaXNhYmxl
ZChldmVudC5kYXRhKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IDcxZmM2NDU3NDk4YzQ5ZWM1OWNlNGQxOTVkZmRk
OWVhNjA5NGMxNDAuLjMyOGRlNGEwMmQ4YjU2MGM4ZTQ5MzM1OTNkYjVmM2FiNmY1MTU2Y2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwpAQCAt
ODIsNiArODIsNyBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZ3MgPSBmdW5jdGlvbigpCiAgICAgdGhp
cy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJkb21CcmVha3BvaW50cyIsIFtdKTsKICAgICB0
aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmcoInhockJyZWFrcG9pbnRzIiwgW10pOwogICAg
IHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygid29ya2VySW5zcGVjdGlvbkVuYWJsZWQi
LCBbXSk7CisgICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJjYWNoZURpc2FibGVk
IiwgZmFsc2UpOwogCiAgICAgLy8gSWYgdGhlcmUgYXJlIHRvbyBtYW55IGJyZWFrcG9pbnRzIGlu
IGEgc3RvcmFnZSwgaXQgaXMgbGlrZWx5IGR1ZSB0byBhIHJlY2VudCBidWcgdGhhdCBjYXVzZWQK
ICAgICAvLyBwZXJpb2RpY2FsIGJyZWFrcG9pbnRzIGR1cGxpY2F0aW9uIGxlYWRpbmcgdG8gaW5z
cGVjdG9yIHNsb3duZXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2V0dGluZ3NTY3JlZW4uanMKaW5kZXggYmRmNDliNmNkN2FhZDg3MjVhNTJkODgwZTlj
YTRkMTE0MDBkMjE1Zi4uN2E0MGY4N2ViYWUwZTMxYzdiNzJhNDk5YTRhMGFmZDgxMDNiMmJmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5nc1Nj
cmVlbi5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdz
U2NyZWVuLmpzCkBAIC00NSw2ICs0NSw5IEBAIFdlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbiA9
IGZ1bmN0aW9uKCkKICAgICAgICAgWyBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ29s
b3JGb3JtYXQuUkdCLCAiUkdCOiByZ2IoMTI4LCAyNTUsIDI1NSkiIF0sCiAgICAgICAgIFsgV2Vi
SW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNvbG9yRm9ybWF0LkhTTCwgIkhTTDogaHNsKDMw
MCwgODAlLCA5MCUpIiBdIF0sIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb2xvckZvcm1hdCkpOwog
CisgICAgcCA9IHRoaXMuX2FwcGVuZFNlY3Rpb24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOZXR3
b3JrIikpOworICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2tib3hTZXR0aW5nKFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiRGlzYWJsZSBjYWNoZSIpLCBXZWJJbnNwZWN0b3Iuc2V0dGlu
Z3MuY2FjaGVEaXNhYmxlZCkpOworCiAgICAgcCA9IHRoaXMuX2FwcGVuZFNlY3Rpb24oV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDb25zb2xlIikpOwogICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3Jl
YXRlQ2hlY2tib3hTZXR0aW5nKFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9nIFhNTEh0dHBSZXF1
ZXN0cyIpLCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubW9uaXRvcmluZ1hIUkVuYWJsZWQpKTsKICAg
ICBwLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlByZXNlcnZlIGxvZyB1cG9uIG5hdmlnYXRpb24iKSwgV2ViSW5zcGVjdG9yLnNl
dHRpbmdzLnByZXNlcnZlQ29uc29sZUxvZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggNzU2OGI0NTdlOWJhY2ZmNjA3ZjI5Mjg3OTgyNjZmNDU4
MzdiZjEyYy4uY2QxMGVkN2I3N2JiNzA2YTQyMzM5N2Q1ZDJkOGUzZGE4ZmUwYTkyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC02ODAsMTIgKzY4
MCwyNyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpzZXREaXNhYmxlZChib29sIGRpc2FibGVkKQogICAg
IGlmICghbV9kaXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yICg7OykgewotICAg
ICAgICBDYWNoZWRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaSA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7
Ci0gICAgICAgIGlmIChpID09IG1fcmVzb3VyY2VzLmVuZCgpKQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGV2aWN0KGktPnNlY29uZCk7Ci0gICAgfQorICAgIGRvRXZpY3RSZXNvdXJjZXMo
KTsKK30KKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCit2b2lkIE1lbW9yeUNhY2hlOjpzZXREaXNh
YmxlZEJ5SW5zcGVjdG9yKGJvb2wgZGlzYWJsZWQpCit7CisgICAgbV9kaXNhYmxlZEJ5SW5zcGVj
dG9yID0gZGlzYWJsZWQ7CisgICAgaWYgKCFtX2Rpc2FibGVkQnlJbnNwZWN0b3IpCisgICAgICAg
IHJldHVybjsKKworICAgIGRvRXZpY3RSZXNvdXJjZXMoKTsKK30KKyNlbmRpZgorCitib29sIE1l
bW9yeUNhY2hlOjpkaXNhYmxlZCgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAg
ICByZXR1cm4gbV9kaXNhYmxlZCB8fCBtX2Rpc2FibGVkQnlJbnNwZWN0b3I7CisjZWxzZQorICAg
IHJldHVybiBtX2Rpc2FibGVkOworI2VuZGlmCiB9CiAKIHZvaWQgTWVtb3J5Q2FjaGU6OmV2aWN0
UmVzb3VyY2VzKCkKQEAgLTY5Myw4ICs3MDgsMTcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6ZXZpY3RS
ZXNvdXJjZXMoKQogICAgIGlmIChkaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBz
ZXREaXNhYmxlZCh0cnVlKTsKLSAgICBzZXREaXNhYmxlZChmYWxzZSk7CisgICAgZG9FdmljdFJl
c291cmNlcygpOworfQorCit2b2lkIE1lbW9yeUNhY2hlOjpkb0V2aWN0UmVzb3VyY2VzKCkKK3sK
KyAgICBmb3IgKDs7KSB7CisgICAgICAgIENhY2hlZFJlc291cmNlTWFwOjppdGVyYXRvciBpID0g
bV9yZXNvdXJjZXMuYmVnaW4oKTsKKyAgICAgICAgaWYgKGkgPT0gbV9yZXNvdXJjZXMuZW5kKCkp
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZXZpY3QoaS0+c2Vjb25kKTsKKyAgICB9CiB9
CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5oCmluZGV4IGM1NzUyZDAzNTlhZjE4Y2NhNzBhNmIwOTExOTdiNDliZDFmMzlmNjcuLjY5MjRi
NzgxYmQ1NTk5ZWU0OGI3YzJjZjI3YzE2YjdhOGI4NGMzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBAIC0xMjUsNyArMTI1LDEwIEBAIHB1YmxpYzoKICAg
ICAvLyBUdXJuIHRoZSBjYWNoZSBvbiBhbmQgb2ZmLiAgRGlzYWJsaW5nIHRoZSBjYWNoZSB3aWxs
IHJlbW92ZSBhbGwgcmVzb3VyY2VzIGZyb20gdGhlIGNhY2hlLiAgVGhleSBtYXkKICAgICAvLyBz
dGlsbCBsaXZlIG9uIGlmIHRoZXkgYXJlIHJlZmVyZW5jZWQgYnkgc29tZSBXZWIgcGFnZSB0aG91
Z2guCiAgICAgdm9pZCBzZXREaXNhYmxlZChib29sKTsKLSAgICBib29sIGRpc2FibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9kaXNhYmxlZDsgfQorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgdm9p
ZCBzZXREaXNhYmxlZEJ5SW5zcGVjdG9yKGJvb2wpOworI2VuZGlmCisgICAgYm9vbCBkaXNhYmxl
ZCgpIGNvbnN0OwogCiAgICAgdm9pZCBldmljdFJlc291cmNlcygpOwogICAgIApAQCAtMTk5LDkg
KzIwMiwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJ1bmVMaXZlUmVzb3VyY2VzVG9TaXplKHVu
c2lnbmVkIHRhcmdldFNpemUpOwogCiAgICAgYm9vbCBtYWtlUmVzb3VyY2VQdXJnZWFibGUoQ2Fj
aGVkUmVzb3VyY2UqKTsKKyAgICB2b2lkIGRvRXZpY3RSZXNvdXJjZXMoKTsKICAgICB2b2lkIGV2
aWN0KENhY2hlZFJlc291cmNlKik7CiAKLSAgICBib29sIG1fZGlzYWJsZWQ7ICAvLyBXaGV0aGVy
IG9yIG5vdCB0aGUgY2FjaGUgaXMgZW5hYmxlZC4KKyAgICBib29sIG1fZGlzYWJsZWQ7IC8vIFdo
ZXRoZXIgb3Igbm90IHRoZSBjYWNoZSBpcyBkaXNhYmxlZC4KKyNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorICAgIGJvb2wgbV9kaXNhYmxlZEJ5SW5zcGVjdG9yOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUg
Y2FjaGUgaXMgZGlzYWJsZWQgYnkgaW5zcGVjdG9yLgorI2VuZGlmCiAgICAgYm9vbCBtX3BydW5l
RW5hYmxlZDsKICAgICBib29sIG1faW5QcnVuZURlYWRSZXNvdXJjZXM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100289</attachid>
            <date>2011-07-11 06:29:15 -0700</date>
            <delta_ts>2011-07-11 07:50:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64097-20110711172913.patch</filename>
            <type>text/plain</type>
            <size>23802</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA3MzIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZjVmYjFjY2IyMGI0M2JkZWYwYmFm
MDM4ODA5ZWJiYmFhOGNhODIwLi40NTU2OGIxMGY3NzM4MTVlYzlhMTlmNWRkNWFkYWQzZTI1NGE5
YTQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDctMTEgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBv
cnQgZm9yIGRpc2FibGluZyBjYWNoZSBpbiB3ZWIgaW5zcGVjdG9yLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwOTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0KToKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNo
ZS1tZW1vcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNoZS1tZW1vcnkuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2Fj
aGUteGhycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhw
OgorCiAyMDExLTA3LTExICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW1F0XVtNYWNdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwppbmRleCA2YzM1Zjgw
YmRkMGM0ZTIxNGE4MzI1MzE0ZjlhZmQ0ODk5MmQ2YjU2Li5lYjhlZjhmMjQxZmY5ZTYzMTIyZjU1
NzZiMzMyM2RhM2FiZjc2N2JmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwpAQCAtMjQ1LDcgKzI0NSw3IEBAIEluc3BlY3RvclRl
c3QuYXNzZXJ0RXF1YWxzID0gZnVuY3Rpb24oZXhwZWN0ZWQsIGZvdW5kLCBtZXNzYWdlKQogCiBJ
bnNwZWN0b3JUZXN0LmFzc2VydFRydWUgPSBmdW5jdGlvbihmb3VuZCwgbWVzc2FnZSkKIHsKLSAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWZvdW5kKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWZvdW5kLCBtZXNzYWdlKTsKIH0KIAogSW5zcGVj
dG9yVGVzdC5zYWZlV3JhcCA9IGZ1bmN0aW9uKGZ1bmMsIG9uZXhjZXB0aW9uKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2Fi
bGUtY2FjaGUtbWVtb3J5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLW1lbW9yeS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTg2YTI2ZDQ3MzlkNjNmMTZiYjAyZTc0MDIzM2Q2OWRiYjZiNTI0NwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay1kaXNhYmxlLWNhY2hlLW1lbW9yeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBA
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjY6IEZpcnN0IHR3byBpbWFnZXMgbG9hZGVkLgorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDM2OiBEb25lLgorVGVzdHMgZGlzYWJsaW5nIGNhY2hlIGZyb20g
aW5zcGVjdG9yLgorCisKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2UmcmFuZG9tPTEmY2FjaGVkPTEKK2h0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhw
P3R5cGU9aW1hZ2UmcmFuZG9tPTEmY2FjaGVkPTEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmst
ZGlzYWJsZS1jYWNoZS1tZW1vcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGU3NzM3MDQyY2MxMmRlMzFh
MzQ3NTVjMWU2YTkyYjEyOTMxYTc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0
bWwKQEAgLTAsMCArMSw5MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNw
ZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vbmV0d29yay10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2FkSW1hZ2UoY2FsbGJhY2spCit7Cisg
ICAgdmFyIGltYWdlID0gbmV3IEltYWdlKCk7CisgICAgaW1hZ2Uub25sb2FkID0gY2FsbGJhY2s7
CisgICAgaW1hZ2Uuc3JjID0gInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZyYW5k
b209MSZjYWNoZWQ9MSI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZSk7Cit9
CisKK2Z1bmN0aW9uIGxvYWREYXRhKCkKK3sKKyAgICBsb2FkSW1hZ2UoaW1hZ2VMb2FkZWQxKTsK
K30KKworZnVuY3Rpb24gaW1hZ2VMb2FkZWQxKCkKK3sKKyAgICBsb2FkSW1hZ2UoaW1hZ2VMb2Fk
ZWQyKTsKK30KKworZnVuY3Rpb24gaW1hZ2VMb2FkZWQyKCkKK3sKKyAgICBjb25zb2xlLmxvZygi
Rmlyc3QgdHdvIGltYWdlcyBsb2FkZWQuIik7Cit9CisKK2Z1bmN0aW9uIGNhY2hlRGlzYWJsZWQo
KQoreworICAgIGxvYWRJbWFnZShhbGxJbWFnZXNMb2FkZWQpOworfQorCitmdW5jdGlvbiBhbGxJ
bWFnZXNMb2FkZWQoKQoreworICAgIGNvbnNvbGUubG9nKCJEb25lLiIpOworfQorCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkNv
bnNvbGVWaWV3LnByb3RvdHlwZSwgImFkZE1lc3NhZ2UiLCBzdGVwMik7CisgICAgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZERhdGEoKSIpOworCisgICAgZnVuY3Rpb24gc3RlcDIo
bXNnKQorICAgIHsKKyAgICAgICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQodHJ1ZSwg
c3RlcDMpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKG1zZykKKyAgICB7CisgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90
eXBlLCAiYWRkTWVzc2FnZSIsIHN0ZXA0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluUGFnZSgiY2FjaGVEaXNhYmxlZCgpIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQo
bXNnKQorICAgIHsKKyAgICAgICAgLy8gaW5zcGVjdG9yLXRlc3QuanMgYXBwZWFycyBpbiBuZXR3
b3JrIHBhbmVsIG9jY2FzaW9uYWxseSBpbiBTYWZhcmkgb24KKyAgICAgICAgLy8gTWFjLCBzbyBj
aGVja2luZyB0d28gbGFzdCByZXNvdXJjZXMuCisgICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9
IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoOworICAgICAgICB2
YXIgcmVzb3VyY2UxID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNv
dXJjZXNDb3VudCAtIDJdOworICAgICAgICB2YXIgcmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBh
bmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworICAgICAgICByZXNv
dXJjZTEucmVxdWVzdENvbnRlbnQoY29udGVudExvYWRlZCk7CisgICAgICAgIHJlc291cmNlMi5y
ZXF1ZXN0Q29udGVudChjb250ZW50TG9hZGVkKTsKKyAgICB9CisKKyAgICB2YXIgY29udGVudExv
YWRlZENvdW50ID0gMDsKKyAgICBmdW5jdGlvbiBjb250ZW50TG9hZGVkKCkKKyAgICB7CisgICAg
ICAgIGlmICgrK2NvbnRlbnRMb2FkZWRDb3VudCAhPT0gMikKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB2YXIgcmVzb3VyY2VzQ291bnQgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdv
cmsucmVzb3VyY2VzLmxlbmd0aDsKKyAgICAgICAgdmFyIHJlc291cmNlMSA9IFdlYkluc3BlY3Rv
ci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbcmVzb3VyY2VzQ291bnQgLSAyXTsKKyAgICAgICAg
dmFyIHJlc291cmNlMiA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbcmVz
b3VyY2VzQ291bnQgLSAxXTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXNv
dXJjZTEudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UyLnVy
bCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShyZXNvdXJjZTEuY29udGVudCAh
PT0gcmVzb3VyY2UyLmNvbnRlbnQsICJTZWNvbmQgYW5kIHRoaXJkIHJlc291cmNlcyBkaWZmZXIi
KTsKKyAgICAgICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQoZmFsc2UsIHN0ZXA1KTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNShtc2cpCisgICAgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3RzIGRpc2FibGluZyBjYWNoZSBmcm9t
IGluc3BlY3Rvci48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXho
cnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLWRpc2FibGUtY2FjaGUteGhycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVm
YTFmYjZhOTNjYTUwYjFlNTdiOWQyZTg4N2UwYjBmMGE0YjI4YwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxl
LWNhY2hlLXhocnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDIzOiBGaXJzdCBYSFIgbG9hZGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDMzOiBE
b25lLgorVGVzdHMgZGlzYWJsaW5nIGNhY2hlIGZyb20gaW5zcGVjdG9yLgorCitodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD9yYW5k
b209MSZjYWNoZWQ9MQoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9yZXNvdXJjZS5waHA/cmFuZG9tPTEmY2FjaGVkPTEKK2h0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3JhbmRvbT0xJmNh
Y2hlZD0xCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44YjQyNmFhYmJhNTcwMmI4ZjY3MTgxYTkwODE0ODY1MDQ4YWRmZGNmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9u
ZXR3b3JrLWRpc2FibGUtY2FjaGUteGhycy5odG1sCkBAIC0wLDAgKzEsMTAyIEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0
aW9uIGxvYWRYSFIoY2FsbGJhY2spCit7CisgICAgZG9YSFIoIkdFVCIsICJyZXNvdXJjZXMvcmVz
b3VyY2UucGhwP3JhbmRvbT0xJmNhY2hlZD0xIiwgdHJ1ZSwgY2FsbGJhY2spOworfQorCitmdW5j
dGlvbiBsb2FkRGF0YSgpCit7CisgICAgbG9hZFhIUih4aHJMb2FkZWQxKTsKK30KKworZnVuY3Rp
b24geGhyTG9hZGVkMSgpCit7CisgICAgbG9hZFhIUih4aHJMb2FkZWQyKTsKK30KKworZnVuY3Rp
b24geGhyTG9hZGVkMigpCit7CisgICAgY29uc29sZS5sb2coIkZpcnN0IFhIUiBsb2FkZWQuIik7
Cit9CisKK2Z1bmN0aW9uIGNhY2hlRGlzYWJsZWQoKQoreworICAgIGxvYWRYSFIoYWxsWEhSc0xv
YWRlZCk7Cit9CisKK2Z1bmN0aW9uIGFsbFhIUnNMb2FkZWQoKQoreworICAgIGNvbnNvbGUubG9n
KCJEb25lLiIpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICAvLyBTaW5jZSB0aGlzIHRl
c3QgY291bGQgYmUgcnVuIHRvZ2V0aGVyIHdpdGggb3RoZXIgaW5zcGVjdG9yIGJhY2tlbmQgY2Fj
aGUKKyAgICAvLyB0ZXN0cywgd2UgbmVlZCB0byByZXNldCBzaXplIGxpbWl0cyB0byBkZWZhdWx0
IG9uZXMuCisgICAgSW5zcGVjdG9yVGVzdC5yZXNldEluc3BlY3RvclJlc291cmNlc0RhdGEoc3Rl
cDEpOworCisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUsICJhZGRNZXNz
YWdlIiwgc3RlcDIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2Fk
RGF0YSgpIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDIobXNnKQorICAgIHsKKyAgICAg
ICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQodHJ1ZSwgc3RlcDMpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHN0ZXAzKG1zZykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
U25pZmZlcihXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLCAiYWRkTWVzc2FnZSIs
IHN0ZXA0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2FjaGVEaXNh
YmxlZCgpIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQobXNnKQorICAgIHsKKyAgICAg
ICAgLy8gaW5zcGVjdG9yLXRlc3QuanMgYXBwZWFycyBpbiBuZXR3b3JrIHBhbmVsIG9jY2FzaW9u
YWxseSBpbiBTYWZhcmkgb24KKyAgICAgICAgLy8gTWFjLCBzbyBjaGVja2luZyB0d28gbGFzdCBy
ZXNvdXJjZXMuCisgICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoOworICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDNdOwor
ICAgICAgICB2YXIgcmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291
cmNlc1tyZXNvdXJjZXNDb3VudCAtIDJdOworICAgICAgICB2YXIgcmVzb3VyY2UzID0gV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworICAg
ICAgICByZXNvdXJjZTEucmVxdWVzdENvbnRlbnQoY29udGVudExvYWRlZCk7CisgICAgICAgIHJl
c291cmNlMi5yZXF1ZXN0Q29udGVudChjb250ZW50TG9hZGVkKTsKKyAgICAgICAgcmVzb3VyY2Uz
LnJlcXVlc3RDb250ZW50KGNvbnRlbnRMb2FkZWQpOworICAgIH0KKworICAgIHZhciBjb250ZW50
TG9hZGVkQ291bnQgPSAwOworICAgIGZ1bmN0aW9uIGNvbnRlbnRMb2FkZWQoKQorICAgIHsKKyAg
ICAgICAgaWYgKCsrY29udGVudExvYWRlZENvdW50ICE9PSAzKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXNvdXJjZXMubGVuZ3RoOworICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2ViSW5zcGVj
dG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDNdOworICAgICAg
ICB2YXIgcmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1ty
ZXNvdXJjZXNDb3VudCAtIDJdOworICAgICAgICB2YXIgcmVzb3VyY2UzID0gV2ViSW5zcGVjdG9y
LnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworCisgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHJlc291cmNlMS51cmwpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdChyZXNvdXJjZTIudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQocmVzb3VyY2UzLnVybCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1
ZShyZXNvdXJjZTEuY29udGVudCA9PT0gcmVzb3VyY2UyLmNvbnRlbnQsICJGaXJzdCBhbmQgc2Vj
b25kIHJlc291cmNlcyBhcmUgZXF1YWwiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRU
cnVlKHJlc291cmNlMi5jb250ZW50ICE9PSByZXNvdXJjZTMuY29udGVudCwgIlNlY29uZCBhbmQg
dGhpcmQgcmVzb3VyY2VzIGRpZmZlciIpOworICAgICAgICBOZXR3b3JrQWdlbnQuc2V0Q2FjaGVE
aXNhYmxlZChmYWxzZSwgc3RlcDUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA1KG1zZykK
KyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVz
dHMgZGlzYWJsaW5nIGNhY2hlIGZyb20gaW5zcGVjdG9yLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvcmVzb3VyY2UucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwCmluZGV4IDNlMWYxODVlMWZkZTI2OGIyZWJm
ZWZhMWQwMDE3ZGMwOTM1MTdlZGIuLmMyYjZmMWNjY2VlMmNiYzhjNjM4OWU2ZjcxOGVmZTU5NTVm
ZjA2NDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHAKQEAgLTgsMTkgKzgsMzcgQEAK
ICAgICAkanNjb250ZW50ID0gJF9HRVRbImpzY29udGVudCJdOwogICAgICRjaHVua2VkID0gJF9H
RVRbImNodW5rZWQiXTsKICAgICAkcmFuZG9tID0gJF9HRVRbInJhbmRvbSJdOwotCi0gICAgIyBF
bmFibGUgZ3ppcCBjb21wcmVzc2lvbiBpZiBuZWVkZWQKLSAgICBpZiAoJGd6aXApCi0gICAgICAg
IG9iX3N0YXJ0KCJvYl9nemhhbmRsZXIiKTsKKyAgICAkY2FjaGVkID0gJF9HRVRbImNhY2hlZCJd
OwogCiAgICAgIyBXYWl0IGJlZm9yZSBzZW5kaW5nIHJlc3BvbnNlCiAgICAgaWYgKCR3YWl0KQog
ICAgICAgICB1c2xlZXAoJHdhaXQgKiAxMDAwKTsKIAorICAgICMgRXhpdCBlYXJseSBpZiB3ZSBy
ZXR1cm4gMzA0IGNvZGUuCisgICAgaWYgKCRjYWNoZWQgJiYgJF9TRVJWRVJbIkhUVFBfSUZfTU9E
SUZJRURfU0lOQ0UiXSkgeworICAgICAgICBoZWFkZXIoIkhUVFAvMS4wIDMwNCBOb3QgTW9kaWZp
ZWQiKTsKKyAgICAgICAgZXhpdDsKKyAgICB9CisKKyAgICAjIEVuYWJsZSBnemlwIGNvbXByZXNz
aW9uIGlmIG5lZWRlZAorICAgIGlmICgkZ3ppcCkKKyAgICAgICAgb2Jfc3RhcnQoIm9iX2d6aGFu
ZGxlciIpOworCiAgICAgIyBTZW5kIGhlYWRlcnMKLSAgICBoZWFkZXIoIkV4cGlyZXM6IFRodSwg
MDEgRGVjIDIwMDMgMTY6MDA6MDAgR01UIik7Ci0gICAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBu
by1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSIpOwotICAgIGhlYWRlcigiUHJhZ21h
OiBuby1jYWNoZSIpOworICAgIGlmICgkY2FjaGVkKSB7CisgICAgICAgICRtYXhfYWdlID0gMTIg
KiAzMSAqIDI0ICogNjAgKiA2MDsgLy9vbmUgeWVhcgorICAgICAgICAkZXhwaXJlcyA9IGdtZGF0
ZShEQVRFX1JGQzExMjMsIHRpbWUoKSArICRtYXhfYWdlKTsKKyAgICAgICAgJGxhc3RfbW9kaWZp
ZWQgPSBnbWRhdGUoREFURV9SRkMxMTIzLCB0aW1lKCkgLSAkbWF4X2FnZSk7CisKKyAgICAgICAg
aGVhZGVyKCJDYWNoZS1Db250cm9sOiBwdWJsaWMsIG1heC1hZ2U9IiAuIDUqJG1heF9hZ2UpOwor
ICAgICAgICBoZWFkZXIoIkNhY2hlLWNvbnRyb2w6IG1heC1hZ2U9MCIpOworICAgICAgICBoZWFk
ZXIoIkV4cGlyZXM6ICIgLiAkZXhwaXJlcyk7CisgICAgICAgIGhlYWRlcigiTGFzdC1Nb2RpZmll
ZDogIiAuICRsYXN0X21vZGlmaWVkKTsKKyAgICB9IGVsc2UgeworICAgICAgICBoZWFkZXIoIkV4
cGlyZXM6IFRodSwgMDEgRGVjIDIwMDMgMTY6MDA6MDAgR01UIik7CisgICAgICAgIGhlYWRlcigi
Q2FjaGUtQ29udHJvbDogbm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUiKTsKKyAg
ICAgICAgaGVhZGVyKCJQcmFnbWE6IG5vLWNhY2hlIik7CisgICAgfQogICAgIGlmICgkdHlwZSA9
PSAianMiKQogICAgICAgICBoZWFkZXIoIkNvbnRlbnQtVHlwZTp0ZXh0L2phdmFzY3JpcHQ7IGNo
YXJzZXQ9VVRGLTgiKTsKICAgICBlbHNlIGlmICgkdHlwZSA9PSAiaW1hZ2UiKQpAQCAtOTQsNiAr
MTEyLDggQEAgX19mb28oPD9waHAgZWNobygkanNkZWxheSk/Pik7CiAgICAgICAgICAgICAgICAg
Zmx1c2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVjaG8oIndvcmxkIik7CisgICAg
ICAgICAgICBpZiAoJHJhbmRvbSkKKyAgICAgICAgICAgICAgICBlY2hvKCI6ICIgLiByYW5kKCkp
OwogICAgICAgICB9CiAgICAgfQogPz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NWRhZjdkZjgzODJjNzA2ZTk0
YjEyMjdiM2Q2OTFkMTM0ZjFiYzUwLi42MzczNmU1ODRhYmViM2FjNTg2MzlmOWUzYjk4ODQyMDc2
NzMwOTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDctMTEgIFZzZXZvbG9k
IFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QWRkIHN1cHBvcnQgZm9yIGRpc2FibGluZyBjYWNoZSBpbiB3ZWIgaW5zcGVjdG9yLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwOTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxl
LWNhY2hlLXhocnMuaHRtbAorCisgICAgICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJp
bmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclJlc291cmNlQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6c2V0Q2FjaGVEaXNhYmxlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L05ldHdvcmtNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2Vy
LnByb3RvdHlwZS5pbmZsaWdodFJlc291cmNlRm9yVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuX2NhY2hlRGlzYWJsZWRTZXR0aW5nQ2hhbmdlZCk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TZXR0aW5ncyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0
aW5nc1NjcmVlbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbik6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUNhY2hlOjpzZXREaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNo
ZTo6c2V0RGlzYWJsZWRCeUluc3BlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNo
ZTo6ZGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmV2aWN0UmVzb3Vy
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpkb0V2aWN0UmVzb3VyY2VzKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaDoKKwogMjAxMS0wNy0xMSAgTXVz
dGFmaXp1ciBSYWhhbWFuICA8bXVzdGFmLmhlcmVAZ21haWwuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEphbWVzIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRW5nbGlz
aC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDYyZjQ5NTkwMjZiOTcwMTIwMzBmYjNlYzU0NTVi
NjVhOWEzZTYxOTIuLjMxYjRmOWMwYTNiOWM3NTU5YWIzNmMyOGIzYzE1ZjM5YjBjODY4ZjcgMTAw
NjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzgKd2NtVis+ME5NWXgrWEpCNzFGK2RjbGlmbE4z
MWF8WjBBbTFYMEEtV0BMTEM4UGxndCh+dik0bzRzV3k1Sz9mP0opCgpkZWx0YSAxNApXY21aMipo
azRzPTxfJE5VSCNAdUJUP3FnPVIwcDV7CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uCmluZGV4IDY4NmFhNGQ1NGNjMGEzMjJkODAwMGRmM2YzNjJmNjI2YzQ5YjU5ZWMuLjlm
NzViOThmM2UzMzZhMTg5YzdkYzk1YzJlYmIzMDA5ZDhlZmY2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTUwNyw3ICs1MDcsMTQgQEAKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJjbGVhckJyb3dzZXJDb29raWVzIiwKICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2xlYXJzIGJyb3dzZXIgY29va2llcy4iCi0gICAg
ICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICJuYW1lIjogInNldENhY2hlRGlzYWJsZWQiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNhY2hlRGlzYWJsZWQiLCAidHlw
ZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIkNhY2hlIGRpc2FibGVkIHN0YXRlLiIgfQor
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRvZ2ds
ZXMgaWdub3JpbmcgY2FjaGUgZm9yIGVhY2ggcmVxdWVzdC4gSWYgPGNvZGU+dHJ1ZTwvY29kZT4s
IGNhY2hlIHdpbGwgbm90IGJlIHVzZWQuIiAKKyAgICAgICAgICAgIH0sCiAgICAgICAgIF0sCiAg
ICAgICAgICJldmVudHMiOiBbCiAgICAgICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggYWZmYzI1ZjBiNjQw
ODU3MDg3OTQyZjUyYzUyYTFlY2E4ZDU4YzBhMi4uNWZiZGVlZDgxMzIyZDY2YzZjNGIwZWNjZDll
MWY1MjMzMjI0N2RkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVz
b3VyY2VzRGF0YS5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJl
c291cmNlRXJyb3IuaCIKQEAgLTcyLDYgKzczLDcgQEAgbmFtZXNwYWNlIFJlc291cmNlQWdlbnRT
dGF0ZSB7CiBzdGF0aWMgY29uc3QgY2hhciByZXNvdXJjZUFnZW50RW5hYmxlZFtdID0gInJlc291
cmNlQWdlbnRFbmFibGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyIGV4dHJhUmVxdWVzdEhlYWRlcnNb
XSA9ICJleHRyYVJlcXVlc3RIZWFkZXJzIjsKIHN0YXRpYyBjb25zdCBjaGFyIGJhY2tncm91bmRF
dmVudHNDb2xsZWN0aW9uRW5hYmxlZFtdID0gImJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5h
YmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZURpc2FibGVkW10gPSAiY2FjaGVEaXNhYmxl
ZCI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVj
dG9yRnJvbnRlbmQqIGZyb250ZW5kKQpAQCAtMjE0LDYgKzIxNiwxMiBAQCB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IERvY3VtZW50TAogICAgIHJlcXVlc3Quc2V0UmVwb3J0TG9hZFRpbWluZyh0cnVlKTsKICAgICBy
ZXF1ZXN0LnNldFJlcG9ydFJhd0hlYWRlcnModHJ1ZSk7CiAKKyAgICBpZiAobV9zdGF0ZS0+Z2V0
Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmNhY2hlRGlzYWJsZWQpKSB7CisgICAgICAgIHJl
cXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOworICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiUHJhZ21hIiwgIm5vLWNhY2hlIik7CisgICAgICAg
IHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJDYWNoZS1Db250cm9sIiwgIm5vLWNhY2hlIik7
CisgICAgfQorCiAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrID0gY3JlYXRl
U2NyaXB0Q2FsbFN0YWNrKFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVy
ZSwgdHJ1ZSk7CiAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBjYWxsU3RhY2tWYWx1ZTsKICAg
ICBpZiAoY2FsbFN0YWNrKQpAQCAtNDIxLDEyICs0MjksMTUgQEAgdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjplbmFibGUoKQogICAgICAgICByZXR1cm47CiAgICAgbV9zdGF0ZS0+c2V0Qm9v
bGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OnJlc291cmNlQWdlbnRFbmFibGVkLCB0cnVlKTsKICAg
ICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclJlc291cmNlQWdlbnQodGhpcyk7
CisKKyAgICBtZW1vcnlDYWNoZSgpLT5zZXREaXNhYmxlZEJ5SW5zcGVjdG9yKG1fc3RhdGUtPmdl
dEJvb2xlYW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpjYWNoZURpc2FibGVkKSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiB7CiAgICAgbV9z
dGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OnJlc291cmNlQWdlbnRFbmFibGVk
LCBmYWxzZSk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KDApOworICAgIG1lbW9yeUNhY2hlKCktPnNldERpc2FibGVkQnlJbnNwZWN0b3IoZmFs
c2UpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldFVzZXJBZ2VudE92ZXJy
aWRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCkBAIC00ODUsNiArNDk2
LDEyIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2xlYXJCcm93c2VyQ29va2llcyhF
cnJvclN0cmluZyopCiAgICAgbV9jbGllbnQtPmNsZWFyQnJvd3NlckNvb2tpZXMoKTsKIH0KIAor
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRDYWNoZURpc2FibGVkKEVycm9yU3RyaW5n
KiwgYm9vbCBjYWNoZURpc2FibGVkKQoreworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oUmVzb3Vy
Y2VBZ2VudFN0YXRlOjpjYWNoZURpc2FibGVkLCBjYWNoZURpc2FibGVkKTsKKyAgICBtZW1vcnlD
YWNoZSgpLT5zZXREaXNhYmxlZEJ5SW5zcGVjdG9yKGNhY2hlRGlzYWJsZWQpOworfQorCiB2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRlZChEb2N1bWVudExvYWRl
ciogbG9hZGVyKQogewogICAgIG1fcmVzb3VyY2VzRGF0YS0+Y2xlYXIobV9wYWdlQWdlbnQtPmxv
YWRlcklkKGxvYWRlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggOTAzMmI0NzljMGQyMzdiMTFjYzA3MWFmMWIzODQyMTE1
ZjRlNjM1Yy4uZjVlYWYyZDhiOTgyOGNlOWU2NDU2NWM0M2FlOTlhYzgwNzllNWViMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBA
IC0xMjcsNiArMTI3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckJyb3dzZXJDYWNoZShF
cnJvclN0cmluZyopOwogICAgIHZvaWQgY2xlYXJCcm93c2VyQ29va2llcyhFcnJvclN0cmluZyop
OworICAgIHZvaWQgc2V0Q2FjaGVEaXNhYmxlZChFcnJvclN0cmluZyosIGJvb2wgY2FjaGVEaXNh
YmxlZCk7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yQ2xpZW50KiwgSW5zcGVj
dG9yU3RhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTmV0d29ya01hbmFnZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L05ldHdvcmtNYW5hZ2VyLmpzCmluZGV4IDFmMzU2NmY5N2JiNjk1N2E0ZmNkN2YxZGY4YWRlMzlj
MDg5YzNjZmMuLjA0ZGUyM2U2N2IxNmRmMTNlM2JkMjg4MzkxMjE2YWU4NjYyNmVjMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdl
ci5qcwpAQCAtMzIsNyArMzIsMTEgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyID0gZnVu
Y3Rpb24oKQogewogICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKICAgICB0aGlz
Ll9kaXNwYXRjaGVyID0gbmV3IFdlYkluc3BlY3Rvci5OZXR3b3JrRGlzcGF0Y2hlcih0aGlzKTsK
KyAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNhY2hlRGlzYWJsZWQuZ2V0KCkpCisgICAg
ICAgIE5ldHdvcmtBZ2VudC5zZXRDYWNoZURpc2FibGVkKHRydWUpOwogICAgIE5ldHdvcmtBZ2Vu
dC5lbmFibGUoKTsKKyAgICAKKyAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY2FjaGVEaXNhYmxl
ZC5hZGRDaGFuZ2VMaXN0ZW5lcih0aGlzLl9jYWNoZURpc2FibGVkU2V0dGluZ0NoYW5nZWQuYmlu
ZCh0aGlzKSk7CiB9CiAKIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5FdmVudFR5cGVzID0g
ewpAQCAtNjIsNiArNjYsMTEgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlw
ZSA9IHsKICAgICBpbmZsaWdodFJlc291cmNlRm9yVVJMOiBmdW5jdGlvbih1cmwpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5faW5mbGlnaHRSZXNvdXJjZXNCeVVSTFt1
cmxdOworICAgIH0sCisgICAgCisgICAgX2NhY2hlRGlzYWJsZWRTZXR0aW5nQ2hhbmdlZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBOZXR3b3JrQWdlbnQuc2V0Q2FjaGVEaXNhYmxl
ZChldmVudC5kYXRhKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IDcxZmM2NDU3NDk4YzQ5ZWM1OWNlNGQxOTVkZmRk
OWVhNjA5NGMxNDAuLjMyOGRlNGEwMmQ4YjU2MGM4ZTQ5MzM1OTNkYjVmM2FiNmY1MTU2Y2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwpAQCAt
ODIsNiArODIsNyBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZ3MgPSBmdW5jdGlvbigpCiAgICAgdGhp
cy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJkb21CcmVha3BvaW50cyIsIFtdKTsKICAgICB0
aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmcoInhockJyZWFrcG9pbnRzIiwgW10pOwogICAg
IHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygid29ya2VySW5zcGVjdGlvbkVuYWJsZWQi
LCBbXSk7CisgICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJjYWNoZURpc2FibGVk
IiwgZmFsc2UpOwogCiAgICAgLy8gSWYgdGhlcmUgYXJlIHRvbyBtYW55IGJyZWFrcG9pbnRzIGlu
IGEgc3RvcmFnZSwgaXQgaXMgbGlrZWx5IGR1ZSB0byBhIHJlY2VudCBidWcgdGhhdCBjYXVzZWQK
ICAgICAvLyBwZXJpb2RpY2FsIGJyZWFrcG9pbnRzIGR1cGxpY2F0aW9uIGxlYWRpbmcgdG8gaW5z
cGVjdG9yIHNsb3duZXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2V0dGluZ3NTY3JlZW4uanMKaW5kZXggYmRmNDliNmNkN2FhZDg3MjVhNTJkODgwZTlj
YTRkMTE0MDBkMjE1Zi4uN2E0MGY4N2ViYWUwZTMxYzdiNzJhNDk5YTRhMGFmZDgxMDNiMmJmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5nc1Nj
cmVlbi5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdz
U2NyZWVuLmpzCkBAIC00NSw2ICs0NSw5IEBAIFdlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbiA9
IGZ1bmN0aW9uKCkKICAgICAgICAgWyBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ29s
b3JGb3JtYXQuUkdCLCAiUkdCOiByZ2IoMTI4LCAyNTUsIDI1NSkiIF0sCiAgICAgICAgIFsgV2Vi
SW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNvbG9yRm9ybWF0LkhTTCwgIkhTTDogaHNsKDMw
MCwgODAlLCA5MCUpIiBdIF0sIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb2xvckZvcm1hdCkpOwog
CisgICAgcCA9IHRoaXMuX2FwcGVuZFNlY3Rpb24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOZXR3
b3JrIikpOworICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2tib3hTZXR0aW5nKFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiRGlzYWJsZSBjYWNoZSIpLCBXZWJJbnNwZWN0b3Iuc2V0dGlu
Z3MuY2FjaGVEaXNhYmxlZCkpOworCiAgICAgcCA9IHRoaXMuX2FwcGVuZFNlY3Rpb24oV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDb25zb2xlIikpOwogICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3Jl
YXRlQ2hlY2tib3hTZXR0aW5nKFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9nIFhNTEh0dHBSZXF1
ZXN0cyIpLCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubW9uaXRvcmluZ1hIUkVuYWJsZWQpKTsKICAg
ICBwLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlByZXNlcnZlIGxvZyB1cG9uIG5hdmlnYXRpb24iKSwgV2ViSW5zcGVjdG9yLnNl
dHRpbmdzLnByZXNlcnZlQ29uc29sZUxvZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggNzU2OGI0NTdlOWJhY2ZmNjA3ZjI5Mjg3OTgyNjZmNDU4
MzdiZjEyYy4uZTY4ODc3NjIxMjg5N2EwZmM0YmMyZmE0NjM4ZGY0ZWUzYWJiZDIxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC01OSw2ICs1OSw5
IEBAIE1lbW9yeUNhY2hlKiBtZW1vcnlDYWNoZSgpCiAKIE1lbW9yeUNhY2hlOjpNZW1vcnlDYWNo
ZSgpCiAgICAgOiBtX2Rpc2FibGVkKGZhbHNlKQorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAg
LCBtX2Rpc2FibGVkQnlJbnNwZWN0b3IoZmFsc2UpCisjZW5kaWYKICAgICAsIG1fcHJ1bmVFbmFi
bGVkKHRydWUpCiAgICAgLCBtX2luUHJ1bmVEZWFkUmVzb3VyY2VzKGZhbHNlKQogICAgICwgbV9j
YXBhY2l0eShjRGVmYXVsdENhY2hlQ2FwYWNpdHkpCkBAIC02ODAsMTIgKzY4MywyNyBAQCB2b2lk
IE1lbW9yeUNhY2hlOjpzZXREaXNhYmxlZChib29sIGRpc2FibGVkKQogICAgIGlmICghbV9kaXNh
YmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yICg7OykgewotICAgICAgICBDYWNoZWRS
ZXNvdXJjZU1hcDo6aXRlcmF0b3IgaSA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7Ci0gICAgICAgIGlm
IChpID09IG1fcmVzb3VyY2VzLmVuZCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGV2
aWN0KGktPnNlY29uZCk7Ci0gICAgfQorICAgIGRvRXZpY3RSZXNvdXJjZXMoKTsKK30KKworI2lm
IEVOQUJMRShJTlNQRUNUT1IpCit2b2lkIE1lbW9yeUNhY2hlOjpzZXREaXNhYmxlZEJ5SW5zcGVj
dG9yKGJvb2wgZGlzYWJsZWQpCit7CisgICAgbV9kaXNhYmxlZEJ5SW5zcGVjdG9yID0gZGlzYWJs
ZWQ7CisgICAgaWYgKCFtX2Rpc2FibGVkQnlJbnNwZWN0b3IpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGRvRXZpY3RSZXNvdXJjZXMoKTsKK30KKyNlbmRpZgorCitib29sIE1lbW9yeUNhY2hlOjpk
aXNhYmxlZCgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICByZXR1cm4gbV9k
aXNhYmxlZCB8fCBtX2Rpc2FibGVkQnlJbnNwZWN0b3I7CisjZWxzZQorICAgIHJldHVybiBtX2Rp
c2FibGVkOworI2VuZGlmCiB9CiAKIHZvaWQgTWVtb3J5Q2FjaGU6OmV2aWN0UmVzb3VyY2VzKCkK
QEAgLTY5Myw4ICs3MTEsMTcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6ZXZpY3RSZXNvdXJjZXMoKQog
ICAgIGlmIChkaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXREaXNhYmxlZCh0
cnVlKTsKLSAgICBzZXREaXNhYmxlZChmYWxzZSk7CisgICAgZG9FdmljdFJlc291cmNlcygpOwor
fQorCit2b2lkIE1lbW9yeUNhY2hlOjpkb0V2aWN0UmVzb3VyY2VzKCkKK3sKKyAgICBmb3IgKDs7
KSB7CisgICAgICAgIENhY2hlZFJlc291cmNlTWFwOjppdGVyYXRvciBpID0gbV9yZXNvdXJjZXMu
YmVnaW4oKTsKKyAgICAgICAgaWYgKGkgPT0gbV9yZXNvdXJjZXMuZW5kKCkpCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZXZpY3QoaS0+c2Vjb25kKTsKKyAgICB9CiB9CiAKICNpZm5kZWYg
TkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IGM1
NzUyZDAzNTlhZjE4Y2NhNzBhNmIwOTExOTdiNDliZDFmMzlmNjcuLjY5MjRiNzgxYmQ1NTk5ZWU0
OGI3YzJjZjI3YzE2YjdhOGI4NGMzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oCkBAIC0xMjUsNyArMTI1LDEwIEBAIHB1YmxpYzoKICAgICAvLyBUdXJuIHRo
ZSBjYWNoZSBvbiBhbmQgb2ZmLiAgRGlzYWJsaW5nIHRoZSBjYWNoZSB3aWxsIHJlbW92ZSBhbGwg
cmVzb3VyY2VzIGZyb20gdGhlIGNhY2hlLiAgVGhleSBtYXkKICAgICAvLyBzdGlsbCBsaXZlIG9u
IGlmIHRoZXkgYXJlIHJlZmVyZW5jZWQgYnkgc29tZSBXZWIgcGFnZSB0aG91Z2guCiAgICAgdm9p
ZCBzZXREaXNhYmxlZChib29sKTsKLSAgICBib29sIGRpc2FibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9kaXNhYmxlZDsgfQorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgdm9pZCBzZXREaXNhYmxl
ZEJ5SW5zcGVjdG9yKGJvb2wpOworI2VuZGlmCisgICAgYm9vbCBkaXNhYmxlZCgpIGNvbnN0Owog
CiAgICAgdm9pZCBldmljdFJlc291cmNlcygpOwogICAgIApAQCAtMTk5LDkgKzIwMiwxMyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcHJ1bmVMaXZlUmVzb3VyY2VzVG9TaXplKHVuc2lnbmVkIHRhcmdl
dFNpemUpOwogCiAgICAgYm9vbCBtYWtlUmVzb3VyY2VQdXJnZWFibGUoQ2FjaGVkUmVzb3VyY2Uq
KTsKKyAgICB2b2lkIGRvRXZpY3RSZXNvdXJjZXMoKTsKICAgICB2b2lkIGV2aWN0KENhY2hlZFJl
c291cmNlKik7CiAKLSAgICBib29sIG1fZGlzYWJsZWQ7ICAvLyBXaGV0aGVyIG9yIG5vdCB0aGUg
Y2FjaGUgaXMgZW5hYmxlZC4KKyAgICBib29sIG1fZGlzYWJsZWQ7IC8vIFdoZXRoZXIgb3Igbm90
IHRoZSBjYWNoZSBpcyBkaXNhYmxlZC4KKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGJvb2wg
bV9kaXNhYmxlZEJ5SW5zcGVjdG9yOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgY2FjaGUgaXMgZGlz
YWJsZWQgYnkgaW5zcGVjdG9yLgorI2VuZGlmCiAgICAgYm9vbCBtX3BydW5lRW5hYmxlZDsKICAg
ICBib29sIG1faW5QcnVuZURlYWRSZXNvdXJjZXM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100300</attachid>
            <date>2011-07-11 07:51:07 -0700</date>
            <delta_ts>2011-07-19 07:43:59 -0700</delta_ts>
            <desc>Patch (mac build fix)</desc>
            <filename>bug-64097-20110711185104.patch</filename>
            <type>text/plain</type>
            <size>24510</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA3MzIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZjVmYjFjY2IyMGI0M2JkZWYwYmFm
MDM4ODA5ZWJiYmFhOGNhODIwLi40NTU2OGIxMGY3NzM4MTVlYzlhMTlmNWRkNWFkYWQzZTI1NGE5
YTQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDctMTEgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBv
cnQgZm9yIGRpc2FibGluZyBjYWNoZSBpbiB3ZWIgaW5zcGVjdG9yLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwOTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0KToKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNo
ZS1tZW1vcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNoZS1tZW1vcnkuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2Fj
aGUteGhycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhw
OgorCiAyMDExLTA3LTExICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW1F0XVtNYWNdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwppbmRleCA2YzM1Zjgw
YmRkMGM0ZTIxNGE4MzI1MzE0ZjlhZmQ0ODk5MmQ2YjU2Li5lYjhlZjhmMjQxZmY5ZTYzMTIyZjU1
NzZiMzMyM2RhM2FiZjc2N2JmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwpAQCAtMjQ1LDcgKzI0NSw3IEBAIEluc3BlY3RvclRl
c3QuYXNzZXJ0RXF1YWxzID0gZnVuY3Rpb24oZXhwZWN0ZWQsIGZvdW5kLCBtZXNzYWdlKQogCiBJ
bnNwZWN0b3JUZXN0LmFzc2VydFRydWUgPSBmdW5jdGlvbihmb3VuZCwgbWVzc2FnZSkKIHsKLSAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWZvdW5kKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWZvdW5kLCBtZXNzYWdlKTsKIH0KIAogSW5zcGVj
dG9yVGVzdC5zYWZlV3JhcCA9IGZ1bmN0aW9uKGZ1bmMsIG9uZXhjZXB0aW9uKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2Fi
bGUtY2FjaGUtbWVtb3J5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLW1lbW9yeS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTg2YTI2ZDQ3MzlkNjNmMTZiYjAyZTc0MDIzM2Q2OWRiYjZiNTI0NwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay1kaXNhYmxlLWNhY2hlLW1lbW9yeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBA
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjY6IEZpcnN0IHR3byBpbWFnZXMgbG9hZGVkLgorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDM2OiBEb25lLgorVGVzdHMgZGlzYWJsaW5nIGNhY2hlIGZyb20g
aW5zcGVjdG9yLgorCisKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2UmcmFuZG9tPTEmY2FjaGVkPTEKK2h0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhw
P3R5cGU9aW1hZ2UmcmFuZG9tPTEmY2FjaGVkPTEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmst
ZGlzYWJsZS1jYWNoZS1tZW1vcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGU3NzM3MDQyY2MxMmRlMzFh
MzQ3NTVjMWU2YTkyYjEyOTMxYTc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0
bWwKQEAgLTAsMCArMSw5MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNw
ZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vbmV0d29yay10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2FkSW1hZ2UoY2FsbGJhY2spCit7Cisg
ICAgdmFyIGltYWdlID0gbmV3IEltYWdlKCk7CisgICAgaW1hZ2Uub25sb2FkID0gY2FsbGJhY2s7
CisgICAgaW1hZ2Uuc3JjID0gInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZyYW5k
b209MSZjYWNoZWQ9MSI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZSk7Cit9
CisKK2Z1bmN0aW9uIGxvYWREYXRhKCkKK3sKKyAgICBsb2FkSW1hZ2UoaW1hZ2VMb2FkZWQxKTsK
K30KKworZnVuY3Rpb24gaW1hZ2VMb2FkZWQxKCkKK3sKKyAgICBsb2FkSW1hZ2UoaW1hZ2VMb2Fk
ZWQyKTsKK30KKworZnVuY3Rpb24gaW1hZ2VMb2FkZWQyKCkKK3sKKyAgICBjb25zb2xlLmxvZygi
Rmlyc3QgdHdvIGltYWdlcyBsb2FkZWQuIik7Cit9CisKK2Z1bmN0aW9uIGNhY2hlRGlzYWJsZWQo
KQoreworICAgIGxvYWRJbWFnZShhbGxJbWFnZXNMb2FkZWQpOworfQorCitmdW5jdGlvbiBhbGxJ
bWFnZXNMb2FkZWQoKQoreworICAgIGNvbnNvbGUubG9nKCJEb25lLiIpOworfQorCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkNv
bnNvbGVWaWV3LnByb3RvdHlwZSwgImFkZE1lc3NhZ2UiLCBzdGVwMik7CisgICAgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZERhdGEoKSIpOworCisgICAgZnVuY3Rpb24gc3RlcDIo
bXNnKQorICAgIHsKKyAgICAgICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQodHJ1ZSwg
c3RlcDMpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKG1zZykKKyAgICB7CisgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90
eXBlLCAiYWRkTWVzc2FnZSIsIHN0ZXA0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluUGFnZSgiY2FjaGVEaXNhYmxlZCgpIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQo
bXNnKQorICAgIHsKKyAgICAgICAgLy8gaW5zcGVjdG9yLXRlc3QuanMgYXBwZWFycyBpbiBuZXR3
b3JrIHBhbmVsIG9jY2FzaW9uYWxseSBpbiBTYWZhcmkgb24KKyAgICAgICAgLy8gTWFjLCBzbyBj
aGVja2luZyB0d28gbGFzdCByZXNvdXJjZXMuCisgICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9
IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoOworICAgICAgICB2
YXIgcmVzb3VyY2UxID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNv
dXJjZXNDb3VudCAtIDJdOworICAgICAgICB2YXIgcmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBh
bmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworICAgICAgICByZXNv
dXJjZTEucmVxdWVzdENvbnRlbnQoY29udGVudExvYWRlZCk7CisgICAgICAgIHJlc291cmNlMi5y
ZXF1ZXN0Q29udGVudChjb250ZW50TG9hZGVkKTsKKyAgICB9CisKKyAgICB2YXIgY29udGVudExv
YWRlZENvdW50ID0gMDsKKyAgICBmdW5jdGlvbiBjb250ZW50TG9hZGVkKCkKKyAgICB7CisgICAg
ICAgIGlmICgrK2NvbnRlbnRMb2FkZWRDb3VudCAhPT0gMikKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB2YXIgcmVzb3VyY2VzQ291bnQgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdv
cmsucmVzb3VyY2VzLmxlbmd0aDsKKyAgICAgICAgdmFyIHJlc291cmNlMSA9IFdlYkluc3BlY3Rv
ci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbcmVzb3VyY2VzQ291bnQgLSAyXTsKKyAgICAgICAg
dmFyIHJlc291cmNlMiA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbcmVz
b3VyY2VzQ291bnQgLSAxXTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXNv
dXJjZTEudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UyLnVy
bCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShyZXNvdXJjZTEuY29udGVudCAh
PT0gcmVzb3VyY2UyLmNvbnRlbnQsICJTZWNvbmQgYW5kIHRoaXJkIHJlc291cmNlcyBkaWZmZXIi
KTsKKyAgICAgICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQoZmFsc2UsIHN0ZXA1KTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNShtc2cpCisgICAgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3RzIGRpc2FibGluZyBjYWNoZSBmcm9t
IGluc3BlY3Rvci48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXho
cnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLWRpc2FibGUtY2FjaGUteGhycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVm
YTFmYjZhOTNjYTUwYjFlNTdiOWQyZTg4N2UwYjBmMGE0YjI4YwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxl
LWNhY2hlLXhocnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDIzOiBGaXJzdCBYSFIgbG9hZGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDMzOiBE
b25lLgorVGVzdHMgZGlzYWJsaW5nIGNhY2hlIGZyb20gaW5zcGVjdG9yLgorCitodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD9yYW5k
b209MSZjYWNoZWQ9MQoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9yZXNvdXJjZS5waHA/cmFuZG9tPTEmY2FjaGVkPTEKK2h0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3JhbmRvbT0xJmNh
Y2hlZD0xCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44YjQyNmFhYmJhNTcwMmI4ZjY3MTgxYTkwODE0ODY1MDQ4YWRmZGNmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9u
ZXR3b3JrLWRpc2FibGUtY2FjaGUteGhycy5odG1sCkBAIC0wLDAgKzEsMTAyIEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0
aW9uIGxvYWRYSFIoY2FsbGJhY2spCit7CisgICAgZG9YSFIoIkdFVCIsICJyZXNvdXJjZXMvcmVz
b3VyY2UucGhwP3JhbmRvbT0xJmNhY2hlZD0xIiwgdHJ1ZSwgY2FsbGJhY2spOworfQorCitmdW5j
dGlvbiBsb2FkRGF0YSgpCit7CisgICAgbG9hZFhIUih4aHJMb2FkZWQxKTsKK30KKworZnVuY3Rp
b24geGhyTG9hZGVkMSgpCit7CisgICAgbG9hZFhIUih4aHJMb2FkZWQyKTsKK30KKworZnVuY3Rp
b24geGhyTG9hZGVkMigpCit7CisgICAgY29uc29sZS5sb2coIkZpcnN0IFhIUiBsb2FkZWQuIik7
Cit9CisKK2Z1bmN0aW9uIGNhY2hlRGlzYWJsZWQoKQoreworICAgIGxvYWRYSFIoYWxsWEhSc0xv
YWRlZCk7Cit9CisKK2Z1bmN0aW9uIGFsbFhIUnNMb2FkZWQoKQoreworICAgIGNvbnNvbGUubG9n
KCJEb25lLiIpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICAvLyBTaW5jZSB0aGlzIHRl
c3QgY291bGQgYmUgcnVuIHRvZ2V0aGVyIHdpdGggb3RoZXIgaW5zcGVjdG9yIGJhY2tlbmQgY2Fj
aGUKKyAgICAvLyB0ZXN0cywgd2UgbmVlZCB0byByZXNldCBzaXplIGxpbWl0cyB0byBkZWZhdWx0
IG9uZXMuCisgICAgSW5zcGVjdG9yVGVzdC5yZXNldEluc3BlY3RvclJlc291cmNlc0RhdGEoc3Rl
cDEpOworCisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUsICJhZGRNZXNz
YWdlIiwgc3RlcDIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2Fk
RGF0YSgpIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDIobXNnKQorICAgIHsKKyAgICAg
ICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQodHJ1ZSwgc3RlcDMpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHN0ZXAzKG1zZykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
U25pZmZlcihXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLCAiYWRkTWVzc2FnZSIs
IHN0ZXA0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2FjaGVEaXNh
YmxlZCgpIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQobXNnKQorICAgIHsKKyAgICAg
ICAgLy8gaW5zcGVjdG9yLXRlc3QuanMgYXBwZWFycyBpbiBuZXR3b3JrIHBhbmVsIG9jY2FzaW9u
YWxseSBpbiBTYWZhcmkgb24KKyAgICAgICAgLy8gTWFjLCBzbyBjaGVja2luZyB0d28gbGFzdCBy
ZXNvdXJjZXMuCisgICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoOworICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDNdOwor
ICAgICAgICB2YXIgcmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291
cmNlc1tyZXNvdXJjZXNDb3VudCAtIDJdOworICAgICAgICB2YXIgcmVzb3VyY2UzID0gV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworICAg
ICAgICByZXNvdXJjZTEucmVxdWVzdENvbnRlbnQoY29udGVudExvYWRlZCk7CisgICAgICAgIHJl
c291cmNlMi5yZXF1ZXN0Q29udGVudChjb250ZW50TG9hZGVkKTsKKyAgICAgICAgcmVzb3VyY2Uz
LnJlcXVlc3RDb250ZW50KGNvbnRlbnRMb2FkZWQpOworICAgIH0KKworICAgIHZhciBjb250ZW50
TG9hZGVkQ291bnQgPSAwOworICAgIGZ1bmN0aW9uIGNvbnRlbnRMb2FkZWQoKQorICAgIHsKKyAg
ICAgICAgaWYgKCsrY29udGVudExvYWRlZENvdW50ICE9PSAzKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXNvdXJjZXMubGVuZ3RoOworICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2ViSW5zcGVj
dG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDNdOworICAgICAg
ICB2YXIgcmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1ty
ZXNvdXJjZXNDb3VudCAtIDJdOworICAgICAgICB2YXIgcmVzb3VyY2UzID0gV2ViSW5zcGVjdG9y
LnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworCisgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHJlc291cmNlMS51cmwpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdChyZXNvdXJjZTIudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQocmVzb3VyY2UzLnVybCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1
ZShyZXNvdXJjZTEuY29udGVudCA9PT0gcmVzb3VyY2UyLmNvbnRlbnQsICJGaXJzdCBhbmQgc2Vj
b25kIHJlc291cmNlcyBhcmUgZXF1YWwiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRU
cnVlKHJlc291cmNlMi5jb250ZW50ICE9PSByZXNvdXJjZTMuY29udGVudCwgIlNlY29uZCBhbmQg
dGhpcmQgcmVzb3VyY2VzIGRpZmZlciIpOworICAgICAgICBOZXR3b3JrQWdlbnQuc2V0Q2FjaGVE
aXNhYmxlZChmYWxzZSwgc3RlcDUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA1KG1zZykK
KyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVz
dHMgZGlzYWJsaW5nIGNhY2hlIGZyb20gaW5zcGVjdG9yLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvcmVzb3VyY2UucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwCmluZGV4IDNlMWYxODVlMWZkZTI2OGIyZWJm
ZWZhMWQwMDE3ZGMwOTM1MTdlZGIuLmMyYjZmMWNjY2VlMmNiYzhjNjM4OWU2ZjcxOGVmZTU5NTVm
ZjA2NDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHAKQEAgLTgsMTkgKzgsMzcgQEAK
ICAgICAkanNjb250ZW50ID0gJF9HRVRbImpzY29udGVudCJdOwogICAgICRjaHVua2VkID0gJF9H
RVRbImNodW5rZWQiXTsKICAgICAkcmFuZG9tID0gJF9HRVRbInJhbmRvbSJdOwotCi0gICAgIyBF
bmFibGUgZ3ppcCBjb21wcmVzc2lvbiBpZiBuZWVkZWQKLSAgICBpZiAoJGd6aXApCi0gICAgICAg
IG9iX3N0YXJ0KCJvYl9nemhhbmRsZXIiKTsKKyAgICAkY2FjaGVkID0gJF9HRVRbImNhY2hlZCJd
OwogCiAgICAgIyBXYWl0IGJlZm9yZSBzZW5kaW5nIHJlc3BvbnNlCiAgICAgaWYgKCR3YWl0KQog
ICAgICAgICB1c2xlZXAoJHdhaXQgKiAxMDAwKTsKIAorICAgICMgRXhpdCBlYXJseSBpZiB3ZSBy
ZXR1cm4gMzA0IGNvZGUuCisgICAgaWYgKCRjYWNoZWQgJiYgJF9TRVJWRVJbIkhUVFBfSUZfTU9E
SUZJRURfU0lOQ0UiXSkgeworICAgICAgICBoZWFkZXIoIkhUVFAvMS4wIDMwNCBOb3QgTW9kaWZp
ZWQiKTsKKyAgICAgICAgZXhpdDsKKyAgICB9CisKKyAgICAjIEVuYWJsZSBnemlwIGNvbXByZXNz
aW9uIGlmIG5lZWRlZAorICAgIGlmICgkZ3ppcCkKKyAgICAgICAgb2Jfc3RhcnQoIm9iX2d6aGFu
ZGxlciIpOworCiAgICAgIyBTZW5kIGhlYWRlcnMKLSAgICBoZWFkZXIoIkV4cGlyZXM6IFRodSwg
MDEgRGVjIDIwMDMgMTY6MDA6MDAgR01UIik7Ci0gICAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBu
by1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSIpOwotICAgIGhlYWRlcigiUHJhZ21h
OiBuby1jYWNoZSIpOworICAgIGlmICgkY2FjaGVkKSB7CisgICAgICAgICRtYXhfYWdlID0gMTIg
KiAzMSAqIDI0ICogNjAgKiA2MDsgLy9vbmUgeWVhcgorICAgICAgICAkZXhwaXJlcyA9IGdtZGF0
ZShEQVRFX1JGQzExMjMsIHRpbWUoKSArICRtYXhfYWdlKTsKKyAgICAgICAgJGxhc3RfbW9kaWZp
ZWQgPSBnbWRhdGUoREFURV9SRkMxMTIzLCB0aW1lKCkgLSAkbWF4X2FnZSk7CisKKyAgICAgICAg
aGVhZGVyKCJDYWNoZS1Db250cm9sOiBwdWJsaWMsIG1heC1hZ2U9IiAuIDUqJG1heF9hZ2UpOwor
ICAgICAgICBoZWFkZXIoIkNhY2hlLWNvbnRyb2w6IG1heC1hZ2U9MCIpOworICAgICAgICBoZWFk
ZXIoIkV4cGlyZXM6ICIgLiAkZXhwaXJlcyk7CisgICAgICAgIGhlYWRlcigiTGFzdC1Nb2RpZmll
ZDogIiAuICRsYXN0X21vZGlmaWVkKTsKKyAgICB9IGVsc2UgeworICAgICAgICBoZWFkZXIoIkV4
cGlyZXM6IFRodSwgMDEgRGVjIDIwMDMgMTY6MDA6MDAgR01UIik7CisgICAgICAgIGhlYWRlcigi
Q2FjaGUtQ29udHJvbDogbm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUiKTsKKyAg
ICAgICAgaGVhZGVyKCJQcmFnbWE6IG5vLWNhY2hlIik7CisgICAgfQogICAgIGlmICgkdHlwZSA9
PSAianMiKQogICAgICAgICBoZWFkZXIoIkNvbnRlbnQtVHlwZTp0ZXh0L2phdmFzY3JpcHQ7IGNo
YXJzZXQ9VVRGLTgiKTsKICAgICBlbHNlIGlmICgkdHlwZSA9PSAiaW1hZ2UiKQpAQCAtOTQsNiAr
MTEyLDggQEAgX19mb28oPD9waHAgZWNobygkanNkZWxheSk/Pik7CiAgICAgICAgICAgICAgICAg
Zmx1c2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVjaG8oIndvcmxkIik7CisgICAg
ICAgICAgICBpZiAoJHJhbmRvbSkKKyAgICAgICAgICAgICAgICBlY2hvKCI6ICIgLiByYW5kKCkp
OwogICAgICAgICB9CiAgICAgfQogPz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NWRhZjdkZjgzODJjNzA2ZTk0
YjEyMjdiM2Q2OTFkMTM0ZjFiYzUwLi5mZGJlNTAzNGI2NzgyY2Y1MWM3MWJmNzk1MjViYzYzYjg3
OGMwMjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDctMTEgIFZzZXZvbG9k
IFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QWRkIHN1cHBvcnQgZm9yIGRpc2FibGluZyBjYWNoZSBpbiB3ZWIgaW5zcGVjdG9yLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwOTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxl
LWNhY2hlLXhocnMuaHRtbAorCisgICAgICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJp
bmdzLmpzOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2Vu
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZW5h
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpc2FibGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0Q2FjaGVEaXNh
YmxlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5pbmZsaWdodFJlc291cmNlRm9y
VVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuX2Nh
Y2hlRGlzYWJsZWRTZXR0aW5nQ2hhbmdlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9TZXR0aW5ncy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZXR0aW5ncyk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5nc1NjcmVlbi5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TZXR0aW5nc1NjcmVlbik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpNZW1vcnlDYWNoZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2V0RGlzYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5Q2FjaGU6OnNldERpc2FibGVkQnlJbnNwZWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5Q2FjaGU6OmRpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNh
Y2hlOjpldmljdFJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6ZG9F
dmljdFJlc291cmNlcyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmg6CisK
IDIwMTEtMDctMTEgIE11c3RhZml6dXIgUmFoYW1hbiAgPG11c3RhZi5oZXJlQGdtYWlsLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJD
b3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCA2MmY0OTU5MDI2Yjk3
MDEyMDMwZmIzZWM1NDU1YjY1YTlhM2U2MTkyLi4zMWI0ZjljMGEzYjljNzU1OWFiMzZjMjhiM2Mx
NWYzOWIwYzg2OGY3IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDM4CndjbVYrPjBOTVl4
K1hKQjcxRitkY2xpZmxOMzFhfFowQW0xWDBBLVdATExDOFBsZ3QofnYpNG80c1d5NUs/Zj9KKQoK
ZGVsdGEgMTQKV2NtWjIqaGs0cz08XyROVUgjQHVCVD9xZz1SMHA1ewoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KaW5kZXggNTE5ZWVkYTc3MzQ3YzI1OTljYzU5ZDI0MjIxYjMyYThkZGU1MjRhZi4uYzBlZmMz
ZGFhYWJmNjUwZDMyZGNkMjA0MWE4NGEyZmRiMzFlYTRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
QEAgLTEwODEsNiArMTA4MSw3IEBAIF9fWk5LN1dlYkNvcmUxMUhpc3RvcnlJdGVtOGNoaWxkcmVu
RXYKIF9fWk5LN1dlYkNvcmUxMUhpc3RvcnlJdGVtOHJlZmVycmVyRXYKIF9fWk5LN1dlYkNvcmUx
MUhpc3RvcnlJdGVtOXVybFN0cmluZ0V2CiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTl2aWV3
U3RhdGVFdgorX19aTks3V2ViQ29yZTExTWVtb3J5Q2FjaGU4ZGlzYWJsZWRFdgogX19aTks3V2Vi
Q29yZTExUmVuZGVyTGF5ZXIxOWFic29sdXRlQm91bmRpbmdCb3hFdgogX19aTks3V2ViQ29yZTEx
UmVuZGVyU3R5bGUyMXZpc2l0ZWREZXBlbmRlbnRDb2xvckVpCiBfX1pOSzdXZWJDb3JlMTFTY3Jp
cHRWYWx1ZTlnZXRTdHJpbmdFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY2U3RyaW5nRQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDY4NmFhNGQ1NGNjMGEzMjJkODAw
MGRmM2YzNjJmNjI2YzQ5YjU5ZWMuLjlmNzViOThmM2UzMzZhMTg5YzdkYzk1YzJlYmIzMDA5ZDhl
ZmY2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTUwNyw3
ICs1MDcsMTQgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJjbGVh
ckJyb3dzZXJDb29raWVzIiwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2xlYXJz
IGJyb3dzZXIgY29va2llcy4iCi0gICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInNldENhY2hlRGlzYWJsZWQiLAorICAg
ICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImNhY2hlRGlzYWJsZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIkNh
Y2hlIGRpc2FibGVkIHN0YXRlLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZXMgaWdub3JpbmcgY2FjaGUgZm9yIGVhY2ggcmVxdWVz
dC4gSWYgPGNvZGU+dHJ1ZTwvY29kZT4sIGNhY2hlIHdpbGwgbm90IGJlIHVzZWQuIiAKKyAgICAg
ICAgICAgIH0sCiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCiAgICAgICAgICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5jcHAKaW5kZXggYWZmYzI1ZjBiNjQwODU3MDg3OTQyZjUyYzUyYTFlY2E4ZDU4YzBhMi4uNWZi
ZGVlZDgxMzIyZDY2YzZjNGIwZWNjZDllMWY1MjMzMjI0N2RkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtNTAsNiAr
NTAsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1l
bnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTWVtb3J5Q2FjaGUu
aCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VzRGF0YS5oIgogI2luY2x1ZGUgIlByb2dyZXNz
VHJhY2tlci5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKQEAgLTcyLDYgKzczLDcgQEAg
bmFtZXNwYWNlIFJlc291cmNlQWdlbnRTdGF0ZSB7CiBzdGF0aWMgY29uc3QgY2hhciByZXNvdXJj
ZUFnZW50RW5hYmxlZFtdID0gInJlc291cmNlQWdlbnRFbmFibGVkIjsKIHN0YXRpYyBjb25zdCBj
aGFyIGV4dHJhUmVxdWVzdEhlYWRlcnNbXSA9ICJleHRyYVJlcXVlc3RIZWFkZXJzIjsKIHN0YXRp
YyBjb25zdCBjaGFyIGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZFtdID0gImJhY2tn
cm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZURp
c2FibGVkW10gPSAiY2FjaGVEaXNhYmxlZCI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQpAQCAtMjE0LDYg
KzIxNiwxMiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TAogICAgIHJlcXVlc3Quc2V0UmVwb3J0
TG9hZFRpbWluZyh0cnVlKTsKICAgICByZXF1ZXN0LnNldFJlcG9ydFJhd0hlYWRlcnModHJ1ZSk7
CiAKKyAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmNhY2hl
RGlzYWJsZWQpKSB7CisgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3Jp
bmdDYWNoZURhdGEpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiUHJhZ21h
IiwgIm5vLWNhY2hlIik7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJDYWNo
ZS1Db250cm9sIiwgIm5vLWNhY2hlIik7CisgICAgfQorCiAgICAgUmVmUHRyPFNjcmlwdENhbGxT
dGFjaz4gY2FsbFN0YWNrID0gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKFNjcmlwdENhbGxTdGFjazo6
bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSwgdHJ1ZSk7CiAgICAgUmVmUHRyPEluc3BlY3RvckFy
cmF5PiBjYWxsU3RhY2tWYWx1ZTsKICAgICBpZiAoY2FsbFN0YWNrKQpAQCAtNDIxLDEyICs0Mjks
MTUgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjplbmFibGUoKQogICAgICAgICByZXR1
cm47CiAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OnJlc291cmNl
QWdlbnRFbmFibGVkLCB0cnVlKTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3Bl
Y3RvclJlc291cmNlQWdlbnQodGhpcyk7CisKKyAgICBtZW1vcnlDYWNoZSgpLT5zZXREaXNhYmxl
ZEJ5SW5zcGVjdG9yKG1fc3RhdGUtPmdldEJvb2xlYW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpjYWNo
ZURpc2FibGVkKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlzYWJsZShF
cnJvclN0cmluZyopCiB7CiAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3Rh
dGU6OnJlc291cmNlQWdlbnRFbmFibGVkLCBmYWxzZSk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5zZXRJbnNwZWN0b3JSZXNvdXJjZUFnZW50KDApOworICAgIG1lbW9yeUNhY2hlKCktPnNl
dERpc2FibGVkQnlJbnNwZWN0b3IoZmFsc2UpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OnNldFVzZXJBZ2VudE92ZXJyaWRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQpCkBAIC00ODUsNiArNDk2LDEyIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6Y2xlYXJCcm93c2VyQ29va2llcyhFcnJvclN0cmluZyopCiAgICAgbV9jbGllbnQtPmNsZWFy
QnJvd3NlckNvb2tpZXMoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRD
YWNoZURpc2FibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBjYWNoZURpc2FibGVkKQoreworICAgIG1f
c3RhdGUtPnNldEJvb2xlYW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpjYWNoZURpc2FibGVkLCBjYWNo
ZURpc2FibGVkKTsKKyAgICBtZW1vcnlDYWNoZSgpLT5zZXREaXNhYmxlZEJ5SW5zcGVjdG9yKGNh
Y2hlRGlzYWJsZWQpOworfQorCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1haW5GcmFt
ZU5hdmlnYXRlZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIG1fcmVzb3VyY2VzRGF0
YS0+Y2xlYXIobV9wYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggOTAzMmI0Nzlj
MGQyMzdiMTFjYzA3MWFmMWIzODQyMTE1ZjRlNjM1Yy4uZjVlYWYyZDhiOTgyOGNlOWU2NDU2NWM0
M2FlOTlhYzgwNzllNWViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC0xMjcsNiArMTI3LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBjbGVhckJyb3dzZXJDYWNoZShFcnJvclN0cmluZyopOwogICAgIHZvaWQgY2xlYXJCcm93
c2VyQ29va2llcyhFcnJvclN0cmluZyopOworICAgIHZvaWQgc2V0Q2FjaGVEaXNhYmxlZChFcnJv
clN0cmluZyosIGJvb2wgY2FjaGVEaXNhYmxlZCk7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50Kiwg
SW5zcGVjdG9yQ2xpZW50KiwgSW5zcGVjdG9yU3RhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCmluZGV4IDFmMzU2NmY5
N2JiNjk1N2E0ZmNkN2YxZGY4YWRlMzljMDg5YzNjZmMuLjA0ZGUyM2U2N2IxNmRmMTNlM2JkMjg4
MzkxMjE2YWU4NjYyNmVjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcwpAQCAtMzIsNyArMzIsMTEgQEAgV2ViSW5zcGVj
dG9yLk5ldHdvcmtNYW5hZ2VyID0gZnVuY3Rpb24oKQogewogICAgIFdlYkluc3BlY3Rvci5PYmpl
Y3QuY2FsbCh0aGlzKTsKICAgICB0aGlzLl9kaXNwYXRjaGVyID0gbmV3IFdlYkluc3BlY3Rvci5O
ZXR3b3JrRGlzcGF0Y2hlcih0aGlzKTsKKyAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNh
Y2hlRGlzYWJsZWQuZ2V0KCkpCisgICAgICAgIE5ldHdvcmtBZ2VudC5zZXRDYWNoZURpc2FibGVk
KHRydWUpOwogICAgIE5ldHdvcmtBZ2VudC5lbmFibGUoKTsKKyAgICAKKyAgICBXZWJJbnNwZWN0
b3Iuc2V0dGluZ3MuY2FjaGVEaXNhYmxlZC5hZGRDaGFuZ2VMaXN0ZW5lcih0aGlzLl9jYWNoZURp
c2FibGVkU2V0dGluZ0NoYW5nZWQuYmluZCh0aGlzKSk7CiB9CiAKIFdlYkluc3BlY3Rvci5OZXR3
b3JrTWFuYWdlci5FdmVudFR5cGVzID0gewpAQCAtNjIsNiArNjYsMTEgQEAgV2ViSW5zcGVjdG9y
Lk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICBpbmZsaWdodFJlc291cmNlRm9yVVJM
OiBmdW5jdGlvbih1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5f
aW5mbGlnaHRSZXNvdXJjZXNCeVVSTFt1cmxdOworICAgIH0sCisgICAgCisgICAgX2NhY2hlRGlz
YWJsZWRTZXR0aW5nQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBOZXR3
b3JrQWdlbnQuc2V0Q2FjaGVEaXNhYmxlZChldmVudC5kYXRhKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IDcxZmM2
NDU3NDk4YzQ5ZWM1OWNlNGQxOTVkZmRkOWVhNjA5NGMxNDAuLjMyOGRlNGEwMmQ4YjU2MGM4ZTQ5
MzM1OTNkYjVmM2FiNmY1MTU2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TZXR0aW5ncy5qcwpAQCAtODIsNiArODIsNyBAQCBXZWJJbnNwZWN0b3IuU2V0dGlu
Z3MgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJkb21C
cmVha3BvaW50cyIsIFtdKTsKICAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmcoInho
ckJyZWFrcG9pbnRzIiwgW10pOwogICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygi
d29ya2VySW5zcGVjdGlvbkVuYWJsZWQiLCBbXSk7CisgICAgdGhpcy5pbnN0YWxsQXBwbGljYXRp
b25TZXR0aW5nKCJjYWNoZURpc2FibGVkIiwgZmFsc2UpOwogCiAgICAgLy8gSWYgdGhlcmUgYXJl
IHRvbyBtYW55IGJyZWFrcG9pbnRzIGluIGEgc3RvcmFnZSwgaXQgaXMgbGlrZWx5IGR1ZSB0byBh
IHJlY2VudCBidWcgdGhhdCBjYXVzZWQKICAgICAvLyBwZXJpb2RpY2FsIGJyZWFrcG9pbnRzIGR1
cGxpY2F0aW9uIGxlYWRpbmcgdG8gaW5zcGVjdG9yIHNsb3duZXNzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMKaW5kZXggYmRm
NDliNmNkN2FhZDg3MjVhNTJkODgwZTljYTRkMTE0MDBkMjE1Zi4uN2E0MGY4N2ViYWUwZTMxYzdi
NzJhNDk5YTRhMGFmZDgxMDNiMmJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVuLmpzCkBAIC00NSw2ICs0NSw5IEBAIFdlYklu
c3BlY3Rvci5TZXR0aW5nc1NjcmVlbiA9IGZ1bmN0aW9uKCkKICAgICAgICAgWyBXZWJJbnNwZWN0
b3IuU3R5bGVzU2lkZWJhclBhbmUuQ29sb3JGb3JtYXQuUkdCLCAiUkdCOiByZ2IoMTI4LCAyNTUs
IDI1NSkiIF0sCiAgICAgICAgIFsgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNvbG9y
Rm9ybWF0LkhTTCwgIkhTTDogaHNsKDMwMCwgODAlLCA5MCUpIiBdIF0sIFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy5jb2xvckZvcm1hdCkpOwogCisgICAgcCA9IHRoaXMuX2FwcGVuZFNlY3Rpb24oV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJOZXR3b3JrIikpOworICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5f
Y3JlYXRlQ2hlY2tib3hTZXR0aW5nKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGlzYWJsZSBjYWNo
ZSIpLCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY2FjaGVEaXNhYmxlZCkpOworCiAgICAgcCA9IHRo
aXMuX2FwcGVuZFNlY3Rpb24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb25zb2xlIikpOwogICAg
IHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2tib3hTZXR0aW5nKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiTG9nIFhNTEh0dHBSZXF1ZXN0cyIpLCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubW9u
aXRvcmluZ1hIUkVuYWJsZWQpKTsKICAgICBwLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNoZWNr
Ym94U2V0dGluZyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByZXNlcnZlIGxvZyB1cG9uIG5hdmln
YXRpb24iKSwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnByZXNlcnZlQ29uc29sZUxvZykpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggNzU2OGI0NTdl
OWJhY2ZmNjA3ZjI5Mjg3OTgyNjZmNDU4MzdiZjEyYy4uZTY4ODc3NjIxMjg5N2EwZmM0YmMyZmE0
NjM4ZGY0ZWUzYWJiZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5
Q2FjaGUuY3BwCkBAIC01OSw2ICs1OSw5IEBAIE1lbW9yeUNhY2hlKiBtZW1vcnlDYWNoZSgpCiAK
IE1lbW9yeUNhY2hlOjpNZW1vcnlDYWNoZSgpCiAgICAgOiBtX2Rpc2FibGVkKGZhbHNlKQorI2lm
IEVOQUJMRShJTlNQRUNUT1IpCisgICAgLCBtX2Rpc2FibGVkQnlJbnNwZWN0b3IoZmFsc2UpCisj
ZW5kaWYKICAgICAsIG1fcHJ1bmVFbmFibGVkKHRydWUpCiAgICAgLCBtX2luUHJ1bmVEZWFkUmVz
b3VyY2VzKGZhbHNlKQogICAgICwgbV9jYXBhY2l0eShjRGVmYXVsdENhY2hlQ2FwYWNpdHkpCkBA
IC02ODAsMTIgKzY4MywyNyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpzZXREaXNhYmxlZChib29sIGRp
c2FibGVkKQogICAgIGlmICghbV9kaXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9y
ICg7OykgewotICAgICAgICBDYWNoZWRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaSA9IG1fcmVzb3Vy
Y2VzLmJlZ2luKCk7Ci0gICAgICAgIGlmIChpID09IG1fcmVzb3VyY2VzLmVuZCgpKQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGV2aWN0KGktPnNlY29uZCk7Ci0gICAgfQorICAgIGRvRXZp
Y3RSZXNvdXJjZXMoKTsKK30KKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCit2b2lkIE1lbW9yeUNh
Y2hlOjpzZXREaXNhYmxlZEJ5SW5zcGVjdG9yKGJvb2wgZGlzYWJsZWQpCit7CisgICAgbV9kaXNh
YmxlZEJ5SW5zcGVjdG9yID0gZGlzYWJsZWQ7CisgICAgaWYgKCFtX2Rpc2FibGVkQnlJbnNwZWN0
b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGRvRXZpY3RSZXNvdXJjZXMoKTsKK30KKyNlbmRp
ZgorCitib29sIE1lbW9yeUNhY2hlOjpkaXNhYmxlZCgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKElO
U1BFQ1RPUikKKyAgICByZXR1cm4gbV9kaXNhYmxlZCB8fCBtX2Rpc2FibGVkQnlJbnNwZWN0b3I7
CisjZWxzZQorICAgIHJldHVybiBtX2Rpc2FibGVkOworI2VuZGlmCiB9CiAKIHZvaWQgTWVtb3J5
Q2FjaGU6OmV2aWN0UmVzb3VyY2VzKCkKQEAgLTY5Myw4ICs3MTEsMTcgQEAgdm9pZCBNZW1vcnlD
YWNoZTo6ZXZpY3RSZXNvdXJjZXMoKQogICAgIGlmIChkaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBzZXREaXNhYmxlZCh0cnVlKTsKLSAgICBzZXREaXNhYmxlZChmYWxzZSk7Cisg
ICAgZG9FdmljdFJlc291cmNlcygpOworfQorCit2b2lkIE1lbW9yeUNhY2hlOjpkb0V2aWN0UmVz
b3VyY2VzKCkKK3sKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIENhY2hlZFJlc291cmNlTWFwOjpp
dGVyYXRvciBpID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsKKyAgICAgICAgaWYgKGkgPT0gbV9yZXNv
dXJjZXMuZW5kKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZXZpY3QoaS0+c2Vjb25k
KTsKKyAgICB9CiB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5oCmluZGV4IGM1NzUyZDAzNTlhZjE4Y2NhNzBhNmIwOTExOTdiNDliZDFm
MzlmNjcuLjY5MjRiNzgxYmQ1NTk5ZWU0OGI3YzJjZjI3YzE2YjdhOGI4NGMzY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBAIC0xMjUsNyArMTI1LDEwIEBA
IHB1YmxpYzoKICAgICAvLyBUdXJuIHRoZSBjYWNoZSBvbiBhbmQgb2ZmLiAgRGlzYWJsaW5nIHRo
ZSBjYWNoZSB3aWxsIHJlbW92ZSBhbGwgcmVzb3VyY2VzIGZyb20gdGhlIGNhY2hlLiAgVGhleSBt
YXkKICAgICAvLyBzdGlsbCBsaXZlIG9uIGlmIHRoZXkgYXJlIHJlZmVyZW5jZWQgYnkgc29tZSBX
ZWIgcGFnZSB0aG91Z2guCiAgICAgdm9pZCBzZXREaXNhYmxlZChib29sKTsKLSAgICBib29sIGRp
c2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxlZDsgfQorI2lmIEVOQUJMRShJTlNQRUNU
T1IpCisgICAgdm9pZCBzZXREaXNhYmxlZEJ5SW5zcGVjdG9yKGJvb2wpOworI2VuZGlmCisgICAg
Ym9vbCBkaXNhYmxlZCgpIGNvbnN0OwogCiAgICAgdm9pZCBldmljdFJlc291cmNlcygpOwogICAg
IApAQCAtMTk5LDkgKzIwMiwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJ1bmVMaXZlUmVzb3Vy
Y2VzVG9TaXplKHVuc2lnbmVkIHRhcmdldFNpemUpOwogCiAgICAgYm9vbCBtYWtlUmVzb3VyY2VQ
dXJnZWFibGUoQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICB2b2lkIGRvRXZpY3RSZXNvdXJjZXMoKTsK
ICAgICB2b2lkIGV2aWN0KENhY2hlZFJlc291cmNlKik7CiAKLSAgICBib29sIG1fZGlzYWJsZWQ7
ICAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgY2FjaGUgaXMgZW5hYmxlZC4KKyAgICBib29sIG1fZGlz
YWJsZWQ7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBjYWNoZSBpcyBkaXNhYmxlZC4KKyNpZiBFTkFC
TEUoSU5TUEVDVE9SKQorICAgIGJvb2wgbV9kaXNhYmxlZEJ5SW5zcGVjdG9yOyAvLyBXaGV0aGVy
IG9yIG5vdCB0aGUgY2FjaGUgaXMgZGlzYWJsZWQgYnkgaW5zcGVjdG9yLgorI2VuZGlmCiAgICAg
Ym9vbCBtX3BydW5lRW5hYmxlZDsKICAgICBib29sIG1faW5QcnVuZURlYWRSZXNvdXJjZXM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101317</attachid>
            <date>2011-07-19 07:44:07 -0700</date>
            <delta_ts>2011-07-19 08:00:46 -0700</delta_ts>
            <desc>Patch with comments addressed</desc>
            <filename>bug-64097-20110719184405.patch</filename>
            <type>text/plain</type>
            <size>28891</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyNTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4N2E2N2NjMGRkNjc3MGI5OGI5ODQ3
OWZlYWQyMTU2ZDkyNDMwMGIyLi5kOWFiNWZhYWNiZmU4ZjZlNDNlYWNkYjc0NTI2Y2QzNzJlMmJm
YWQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDctMTkgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBv
cnQgZm9yIGRpc2FibGluZyBjYWNoZSBpbiB3ZWIgaW5zcGVjdG9yLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwOTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0KToKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNo
ZS1tZW1vcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNoZS1tZW1vcnkuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2Fj
aGUteGhycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhw
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAgICAgICogcGxh
dGZvcm0vd2luL1NraXBwZWQ6CisKIDIwMTEtMDctMTkgIEplcmVteSBNb3Nrb3ZpY2ggIDxqZXJl
bXlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBtaWNyb3Bob25lIGljb24gcGxhY2VtZW50
IGluIHNwZWVjaCBpbnB1dCBjb250cm9sIGZvciBkaXI9cnRsLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwppbmRleCBhY2YyNmQ1OTcz
Y2RmY2JiODNjNWIwOWZhYmI0NmY5NTUyZjZhMjRmLi5lMzQ1YTE0ZGQ0YjI2YThhY2JmYTU5OTFi
YTkyNGMzYzJiYzY2N2ZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbnNwZWN0b3ItdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbnNwZWN0b3ItdGVzdC5qcwpAQCAtMjYzLDcgKzI2Myw3IEBAIEluc3BlY3RvclRlc3Qu
YXNzZXJ0RXF1YWxzID0gZnVuY3Rpb24oZXhwZWN0ZWQsIGZvdW5kLCBtZXNzYWdlKQogCiBJbnNw
ZWN0b3JUZXN0LmFzc2VydFRydWUgPSBmdW5jdGlvbihmb3VuZCwgbWVzc2FnZSkKIHsKLSAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWZvdW5kKTsKKyAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWZvdW5kLCBtZXNzYWdlKTsKIH0KIAogSW5zcGVjdG9y
VGVzdC5zYWZlV3JhcCA9IGZ1bmN0aW9uKGZ1bmMsIG9uZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUt
Y2FjaGUtbWVtb3J5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLW1lbW9yeS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTg2YTI2ZDQ3MzlkNjNmMTZiYjAyZTc0MDIzM2Q2OWRiYjZiNTI0NwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0
d29yay1kaXNhYmxlLWNhY2hlLW1lbW9yeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMjY6IEZpcnN0IHR3byBpbWFnZXMgbG9hZGVkLgorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDM2OiBEb25lLgorVGVzdHMgZGlzYWJsaW5nIGNhY2hlIGZyb20gaW5z
cGVjdG9yLgorCisKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2UmcmFuZG9tPTEmY2FjaGVkPTEKK2h0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5
cGU9aW1hZ2UmcmFuZG9tPTEmY2FjaGVkPTEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlz
YWJsZS1jYWNoZS1tZW1vcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGU3NzM3MDQyY2MxMmRlMzFhMzQ3
NTVjMWU2YTkyYjEyOTMxYTc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0bWwK
QEAgLTAsMCArMSw5MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0
b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vbmV0d29yay10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2FkSW1hZ2UoY2FsbGJhY2spCit7CisgICAg
dmFyIGltYWdlID0gbmV3IEltYWdlKCk7CisgICAgaW1hZ2Uub25sb2FkID0gY2FsbGJhY2s7Cisg
ICAgaW1hZ2Uuc3JjID0gInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZyYW5kb209
MSZjYWNoZWQ9MSI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZSk7Cit9CisK
K2Z1bmN0aW9uIGxvYWREYXRhKCkKK3sKKyAgICBsb2FkSW1hZ2UoaW1hZ2VMb2FkZWQxKTsKK30K
KworZnVuY3Rpb24gaW1hZ2VMb2FkZWQxKCkKK3sKKyAgICBsb2FkSW1hZ2UoaW1hZ2VMb2FkZWQy
KTsKK30KKworZnVuY3Rpb24gaW1hZ2VMb2FkZWQyKCkKK3sKKyAgICBjb25zb2xlLmxvZygiRmly
c3QgdHdvIGltYWdlcyBsb2FkZWQuIik7Cit9CisKK2Z1bmN0aW9uIGNhY2hlRGlzYWJsZWQoKQor
eworICAgIGxvYWRJbWFnZShhbGxJbWFnZXNMb2FkZWQpOworfQorCitmdW5jdGlvbiBhbGxJbWFn
ZXNMb2FkZWQoKQoreworICAgIGNvbnNvbGUubG9nKCJEb25lLiIpOworfQorCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkNvbnNv
bGVWaWV3LnByb3RvdHlwZSwgImFkZE1lc3NhZ2UiLCBzdGVwMik7CisgICAgSW5zcGVjdG9yVGVz
dC5ldmFsdWF0ZUluUGFnZSgibG9hZERhdGEoKSIpOworCisgICAgZnVuY3Rpb24gc3RlcDIobXNn
KQorICAgIHsKKyAgICAgICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQodHJ1ZSwgc3Rl
cDMpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKG1zZykKKyAgICB7CisgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBl
LCAiYWRkTWVzc2FnZSIsIHN0ZXA0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUlu
UGFnZSgiY2FjaGVEaXNhYmxlZCgpIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQobXNn
KQorICAgIHsKKyAgICAgICAgLy8gaW5zcGVjdG9yLXRlc3QuanMgYXBwZWFycyBpbiBuZXR3b3Jr
IHBhbmVsIG9jY2FzaW9uYWxseSBpbiBTYWZhcmkgb24KKyAgICAgICAgLy8gTWFjLCBzbyBjaGVj
a2luZyB0d28gbGFzdCByZXNvdXJjZXMuCisgICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9IFdl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoOworICAgICAgICB2YXIg
cmVzb3VyY2UxID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJj
ZXNDb3VudCAtIDJdOworICAgICAgICB2YXIgcmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworICAgICAgICByZXNvdXJj
ZTEucmVxdWVzdENvbnRlbnQoY29udGVudExvYWRlZCk7CisgICAgICAgIHJlc291cmNlMi5yZXF1
ZXN0Q29udGVudChjb250ZW50TG9hZGVkKTsKKyAgICB9CisKKyAgICB2YXIgY29udGVudExvYWRl
ZENvdW50ID0gMDsKKyAgICBmdW5jdGlvbiBjb250ZW50TG9hZGVkKCkKKyAgICB7CisgICAgICAg
IGlmICgrK2NvbnRlbnRMb2FkZWRDb3VudCAhPT0gMikKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICB2YXIgcmVzb3VyY2VzQ291bnQgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsu
cmVzb3VyY2VzLmxlbmd0aDsKKyAgICAgICAgdmFyIHJlc291cmNlMSA9IFdlYkluc3BlY3Rvci5w
YW5lbHMubmV0d29yay5yZXNvdXJjZXNbcmVzb3VyY2VzQ291bnQgLSAyXTsKKyAgICAgICAgdmFy
IHJlc291cmNlMiA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbcmVzb3Vy
Y2VzQ291bnQgLSAxXTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXNvdXJj
ZTEudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UyLnVybCk7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShyZXNvdXJjZTEuY29udGVudCAhPT0g
cmVzb3VyY2UyLmNvbnRlbnQsICJTZWNvbmQgYW5kIHRoaXJkIHJlc291cmNlcyBkaWZmZXIiKTsK
KyAgICAgICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQoZmFsc2UsIHN0ZXA1KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNShtc2cpCisgICAgeworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3RzIGRpc2FibGluZyBjYWNoZSBmcm9tIGlu
c3BlY3Rvci48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9u
ZXR3b3JrLWRpc2FibGUtY2FjaGUteGhycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVmYTFm
YjZhOTNjYTUwYjFlNTdiOWQyZTg4N2UwYjBmMGE0YjI4YwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNh
Y2hlLXhocnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDIzOiBGaXJzdCBYSFIgbG9hZGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDMzOiBEb25l
LgorVGVzdHMgZGlzYWJsaW5nIGNhY2hlIGZyb20gaW5zcGVjdG9yLgorCitodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD9yYW5kb209
MSZjYWNoZWQ9MQoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9yZXNvdXJjZS5waHA/cmFuZG9tPTEmY2FjaGVkPTEKK2h0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3JhbmRvbT0xJmNhY2hl
ZD0xCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44YjQyNmFhYmJhNTcwMmI4ZjY3MTgxYTkwODE0ODY1MDQ4YWRmZGNmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLWRpc2FibGUtY2FjaGUteGhycy5odG1sCkBAIC0wLDAgKzEsMTAyIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9u
IGxvYWRYSFIoY2FsbGJhY2spCit7CisgICAgZG9YSFIoIkdFVCIsICJyZXNvdXJjZXMvcmVzb3Vy
Y2UucGhwP3JhbmRvbT0xJmNhY2hlZD0xIiwgdHJ1ZSwgY2FsbGJhY2spOworfQorCitmdW5jdGlv
biBsb2FkRGF0YSgpCit7CisgICAgbG9hZFhIUih4aHJMb2FkZWQxKTsKK30KKworZnVuY3Rpb24g
eGhyTG9hZGVkMSgpCit7CisgICAgbG9hZFhIUih4aHJMb2FkZWQyKTsKK30KKworZnVuY3Rpb24g
eGhyTG9hZGVkMigpCit7CisgICAgY29uc29sZS5sb2coIkZpcnN0IFhIUiBsb2FkZWQuIik7Cit9
CisKK2Z1bmN0aW9uIGNhY2hlRGlzYWJsZWQoKQoreworICAgIGxvYWRYSFIoYWxsWEhSc0xvYWRl
ZCk7Cit9CisKK2Z1bmN0aW9uIGFsbFhIUnNMb2FkZWQoKQoreworICAgIGNvbnNvbGUubG9nKCJE
b25lLiIpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICAvLyBTaW5jZSB0aGlzIHRlc3Qg
Y291bGQgYmUgcnVuIHRvZ2V0aGVyIHdpdGggb3RoZXIgaW5zcGVjdG9yIGJhY2tlbmQgY2FjaGUK
KyAgICAvLyB0ZXN0cywgd2UgbmVlZCB0byByZXNldCBzaXplIGxpbWl0cyB0byBkZWZhdWx0IG9u
ZXMuCisgICAgSW5zcGVjdG9yVGVzdC5yZXNldEluc3BlY3RvclJlc291cmNlc0RhdGEoc3RlcDEp
OworCisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUsICJhZGRNZXNzYWdl
Iiwgc3RlcDIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkRGF0
YSgpIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDIobXNnKQorICAgIHsKKyAgICAgICAg
TmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQodHJ1ZSwgc3RlcDMpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHN0ZXAzKG1zZykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25p
ZmZlcihXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLCAiYWRkTWVzc2FnZSIsIHN0
ZXA0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2FjaGVEaXNhYmxl
ZCgpIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQobXNnKQorICAgIHsKKyAgICAgICAg
Ly8gaW5zcGVjdG9yLXRlc3QuanMgYXBwZWFycyBpbiBuZXR3b3JrIHBhbmVsIG9jY2FzaW9uYWxs
eSBpbiBTYWZhcmkgb24KKyAgICAgICAgLy8gTWFjLCBzbyBjaGVja2luZyB0d28gbGFzdCByZXNv
dXJjZXMuCisgICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5yZXNvdXJjZXMubGVuZ3RoOworICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDNdOworICAg
ICAgICB2YXIgcmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNl
c1tyZXNvdXJjZXNDb3VudCAtIDJdOworICAgICAgICB2YXIgcmVzb3VyY2UzID0gV2ViSW5zcGVj
dG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworICAgICAg
ICByZXNvdXJjZTEucmVxdWVzdENvbnRlbnQoY29udGVudExvYWRlZCk7CisgICAgICAgIHJlc291
cmNlMi5yZXF1ZXN0Q29udGVudChjb250ZW50TG9hZGVkKTsKKyAgICAgICAgcmVzb3VyY2UzLnJl
cXVlc3RDb250ZW50KGNvbnRlbnRMb2FkZWQpOworICAgIH0KKworICAgIHZhciBjb250ZW50TG9h
ZGVkQ291bnQgPSAwOworICAgIGZ1bmN0aW9uIGNvbnRlbnRMb2FkZWQoKQorICAgIHsKKyAgICAg
ICAgaWYgKCsrY29udGVudExvYWRlZENvdW50ICE9PSAzKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29y
ay5yZXNvdXJjZXMubGVuZ3RoOworICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2ViSW5zcGVjdG9y
LnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDNdOworICAgICAgICB2
YXIgcmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNv
dXJjZXNDb3VudCAtIDJdOworICAgICAgICB2YXIgcmVzb3VyY2UzID0gV2ViSW5zcGVjdG9yLnBh
bmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworCisgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KHJlc291cmNlMS51cmwpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdChyZXNvdXJjZTIudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQocmVzb3VyY2UzLnVybCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShy
ZXNvdXJjZTEuY29udGVudCA9PT0gcmVzb3VyY2UyLmNvbnRlbnQsICJGaXJzdCBhbmQgc2Vjb25k
IHJlc291cmNlcyBhcmUgZXF1YWwiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVl
KHJlc291cmNlMi5jb250ZW50ICE9PSByZXNvdXJjZTMuY29udGVudCwgIlNlY29uZCBhbmQgdGhp
cmQgcmVzb3VyY2VzIGRpZmZlciIpOworICAgICAgICBOZXR3b3JrQWdlbnQuc2V0Q2FjaGVEaXNh
YmxlZChmYWxzZSwgc3RlcDUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA1KG1zZykKKyAg
ICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdHMg
ZGlzYWJsaW5nIGNhY2hlIGZyb20gaW5zcGVjdG9yLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvcmVzb3VyY2UucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwCmluZGV4IDNlMWYxODVlMWZkZTI2OGIyZWJmZWZh
MWQwMDE3ZGMwOTM1MTdlZGIuLmMyYjZmMWNjY2VlMmNiYzhjNjM4OWU2ZjcxOGVmZTU5NTVmZjA2
NDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
cmVzb3VyY2VzL3Jlc291cmNlLnBocAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHAKQEAgLTgsMTkgKzgsMzcgQEAKICAg
ICAkanNjb250ZW50ID0gJF9HRVRbImpzY29udGVudCJdOwogICAgICRjaHVua2VkID0gJF9HRVRb
ImNodW5rZWQiXTsKICAgICAkcmFuZG9tID0gJF9HRVRbInJhbmRvbSJdOwotCi0gICAgIyBFbmFi
bGUgZ3ppcCBjb21wcmVzc2lvbiBpZiBuZWVkZWQKLSAgICBpZiAoJGd6aXApCi0gICAgICAgIG9i
X3N0YXJ0KCJvYl9nemhhbmRsZXIiKTsKKyAgICAkY2FjaGVkID0gJF9HRVRbImNhY2hlZCJdOwog
CiAgICAgIyBXYWl0IGJlZm9yZSBzZW5kaW5nIHJlc3BvbnNlCiAgICAgaWYgKCR3YWl0KQogICAg
ICAgICB1c2xlZXAoJHdhaXQgKiAxMDAwKTsKIAorICAgICMgRXhpdCBlYXJseSBpZiB3ZSByZXR1
cm4gMzA0IGNvZGUuCisgICAgaWYgKCRjYWNoZWQgJiYgJF9TRVJWRVJbIkhUVFBfSUZfTU9ESUZJ
RURfU0lOQ0UiXSkgeworICAgICAgICBoZWFkZXIoIkhUVFAvMS4wIDMwNCBOb3QgTW9kaWZpZWQi
KTsKKyAgICAgICAgZXhpdDsKKyAgICB9CisKKyAgICAjIEVuYWJsZSBnemlwIGNvbXByZXNzaW9u
IGlmIG5lZWRlZAorICAgIGlmICgkZ3ppcCkKKyAgICAgICAgb2Jfc3RhcnQoIm9iX2d6aGFuZGxl
ciIpOworCiAgICAgIyBTZW5kIGhlYWRlcnMKLSAgICBoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEg
RGVjIDIwMDMgMTY6MDA6MDAgR01UIik7Ci0gICAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1z
dG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSIpOwotICAgIGhlYWRlcigiUHJhZ21hOiBu
by1jYWNoZSIpOworICAgIGlmICgkY2FjaGVkKSB7CisgICAgICAgICRtYXhfYWdlID0gMTIgKiAz
MSAqIDI0ICogNjAgKiA2MDsgLy9vbmUgeWVhcgorICAgICAgICAkZXhwaXJlcyA9IGdtZGF0ZShE
QVRFX1JGQzExMjMsIHRpbWUoKSArICRtYXhfYWdlKTsKKyAgICAgICAgJGxhc3RfbW9kaWZpZWQg
PSBnbWRhdGUoREFURV9SRkMxMTIzLCB0aW1lKCkgLSAkbWF4X2FnZSk7CisKKyAgICAgICAgaGVh
ZGVyKCJDYWNoZS1Db250cm9sOiBwdWJsaWMsIG1heC1hZ2U9IiAuIDUqJG1heF9hZ2UpOworICAg
ICAgICBoZWFkZXIoIkNhY2hlLWNvbnRyb2w6IG1heC1hZ2U9MCIpOworICAgICAgICBoZWFkZXIo
IkV4cGlyZXM6ICIgLiAkZXhwaXJlcyk7CisgICAgICAgIGhlYWRlcigiTGFzdC1Nb2RpZmllZDog
IiAuICRsYXN0X21vZGlmaWVkKTsKKyAgICB9IGVsc2UgeworICAgICAgICBoZWFkZXIoIkV4cGly
ZXM6IFRodSwgMDEgRGVjIDIwMDMgMTY6MDA6MDAgR01UIik7CisgICAgICAgIGhlYWRlcigiQ2Fj
aGUtQ29udHJvbDogbm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUiKTsKKyAgICAg
ICAgaGVhZGVyKCJQcmFnbWE6IG5vLWNhY2hlIik7CisgICAgfQogICAgIGlmICgkdHlwZSA9PSAi
anMiKQogICAgICAgICBoZWFkZXIoIkNvbnRlbnQtVHlwZTp0ZXh0L2phdmFzY3JpcHQ7IGNoYXJz
ZXQ9VVRGLTgiKTsKICAgICBlbHNlIGlmICgkdHlwZSA9PSAiaW1hZ2UiKQpAQCAtOTQsNiArMTEy
LDggQEAgX19mb28oPD9waHAgZWNobygkanNkZWxheSk/Pik7CiAgICAgICAgICAgICAgICAgZmx1
c2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVjaG8oIndvcmxkIik7CisgICAgICAg
ICAgICBpZiAoJHJhbmRvbSkKKyAgICAgICAgICAgICAgICBlY2hvKCI6ICIgLiByYW5kKCkpOwog
ICAgICAgICB9CiAgICAgfQogPz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggNDllMjEx
MjgzMjA5M2IzOGRhYjk0NzVhNmQwOTdiODA0N2UzZThhOS4uZTI5NGI0NGM2MWI3ZGFlMjYxNTA4
ZjFmMzE0MThiNDgyMTIzMWQxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTE0NjMs
NiArMTQ2MywxMCBAQCBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstc2l6ZS1j
aHVua2VkLmh0bWwKIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1zaXplLXN5
bmMuaHRtbAogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNpemUuaHRtbAog
CisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDA5NworaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0bWwK
K2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMu
aHRtbAorCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTQzNwog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsZWFyLWFmdGVyLWRpc2FibGVk
Lmh0bWwKIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9w
ZW4uaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAppbmRleCBjNDk2NjZjOGY3NTljMTAyZWMw
NzczMzdiMDhlODQyNDUzNDkyMTc0Li4zYzhlOWEwZWYxZmIxMDA4NTdiNWI3MWNlNGM4Y2NlZmVm
OTE1NjhlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAtMzI2LDYgKzMyNiwxMCBAQCB3
ZWJhcmNoaXZlL3Rlc3QtbGluay1yZWwtaWNvbi5odG1sCiBodHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstc2l6ZS1jaHVua2VkLmh0bWwKIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay1zaXplLXN5bmMuaHRtbAogCisjIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NDA5NworaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0bWwKK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbAorCiAjIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODUxNQogY29tcG9zaXRpbmcvb3ZlcmZsb3cvY2xpcC1j
b250ZW50LXVuZGVyLW92ZXJmbG93LWNvbnRyb2xzLmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBw
ZWQKaW5kZXggNTk5MGRkYWNiYTA2YjU0NzA0NDEyY2NmMWFjY2ViYjhhMTA4NjYwMS4uNTFiOWFm
MTAwN2UzYTZiZDc4NmRiYzhiYjg1M2MzYmFkMTUyMTdiMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lw
cGVkCkBAIC0yMTk5LDYgKzIxOTksMTAgQEAgZmFzdC9kb20vSFRNTE1ldGVyRWxlbWVudC9tZXRl
ci1zdHlsZXMuaHRtbAogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNpemUt
Y2h1bmtlZC5odG1sCiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstc2l6ZS1z
eW5jLmh0bWwKIAorIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQw
OTcKK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLW1l
bW9yeS5odG1sCitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1j
YWNoZS14aHJzLmh0bWwKKwogIyBbUXRdIG1lZGlhL3ZpZGVvLXBsYXliYWNrcmF0ZS5odG1sIGZh
aWxzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzQ3NgogbWVk
aWEvdmlkZW8tcGxheWJhY2tyYXRlLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXgg
ODRjN2NjZjEwNzhmYzkxNjlmNzliYzI4OGEwMmQzNjdlNTQ0NTRlNy4uZWRlMTRkZGEwMWMyODA4
ZTY3Mzk3ZDc0ZTk4MGJlOWM4MTJmNGU1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAg
LTUyLDYgKzUyLDEwIEBAIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay10aW1p
bmcuaHRtbAogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNpemUtY2h1bmtl
ZC5odG1sCiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstc2l6ZS1zeW5jLmh0
bWwKIAorIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwOTcKK2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLW1lbW9yeS5o
dG1sCitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNoZS14
aHJzLmh0bWwKKwogIyBGYWlscyA8cmRhcjovL3Byb2JsZW0vNTY3NDI4OT4KIG1lZGlhL3ZpZGVv
LXNlZWstcGFzdC1lbmQtcGF1c2VkLmh0bWwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGIwZjk0NmFkZDQ0ZDcz
M2U4ODFiMjI2ZWQ4ZGIyN2IzYzA0NTgxYmEuLjEzNjg0YmFhNjQ3MDlkOGJkYjNjMGNmMDRlMDRk
ZjUwYTBkOTRjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzMyBAQAogMjAxMS0wNy0xOSAgVnNl
dm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVj
dG9yOiBBZGQgc3VwcG9ydCBmb3IgZGlzYWJsaW5nIGNhY2hlIGluIHdlYiBpbnNwZWN0b3IuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDA5NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNoZS1tZW1vcnkuaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRp
c2FibGUtY2FjaGUteGhycy5odG1sCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL2xvY2FsaXpl
ZFN0cmluZ3MuanM6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNsaWVudDo6c2V0Q2FjaGVEaXNhYmxlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdl
bnQ6OnNldENhY2hlRGlzYWJsZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdl
ci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuaW5m
bGlnaHRSZXNvdXJjZUZvclVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFn
ZXIucHJvdG90eXBlLl9jYWNoZURpc2FibGVkU2V0dGluZ0NoYW5nZWQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0
dGluZ3MpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4pOgorCisyMDExLTA3LTE5ICBW
c2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFJlbmFtZSBhZ2VudElkZW50aWZpZXJQcmVmaXggdG8gcHJvY2Vzc0lkLCBtb3ZlIG91
dCBmcm9tIHBhZ2UgYWdlbnQgYW5kIG1ha2Ugc3RhdGljLgogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3MjkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUv
RW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDYyZjQ5NTkwMjZiOTcwMTIw
MzBmYjNlYzU0NTViNjVhOWEzZTYxOTIuLjMxYjRmOWMwYTNiOWM3NTU5YWIzNmMyOGIzYzE1ZjM5
YjBjODY4ZjcgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzgKd2NtVis+ME5NWXgrWEpC
NzFGK2RjbGlmbE4zMWF8WjBBbTFYMEEtV0BMTEM4UGxndCh+dik0bzRzV3k1Sz9mP0opCgpkZWx0
YSAxNApXY21aMipoazRzPTxfJE5VSCNAdUJUP3FnPVIwcDV7CgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDEyNzk5MGIxNmIxNjMyNTc5NzRiMjdlZTUzMWY1YTZk
ZTU0NTQ2MTYuLmUxOWIwM2JiYmU3YjgwMTE5MjExNjY2NTZjMmFjYThmNmNiMTBjYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTUwOCw3ICs1MDgsMTQgQEAK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJjbGVhckJyb3dzZXJDb29r
aWVzIiwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2xlYXJzIGJyb3dzZXIgY29v
a2llcy4iCi0gICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICJuYW1lIjogInNldENhY2hlRGlzYWJsZWQiLAorICAgICAgICAgICAgICAg
ICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNhY2hlRGlz
YWJsZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIkNhY2hlIGRpc2FibGVk
IHN0YXRlLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIlRvZ2dsZXMgaWdub3JpbmcgY2FjaGUgZm9yIGVhY2ggcmVxdWVzdC4gSWYgPGNvZGU+
dHJ1ZTwvY29kZT4sIGNhY2hlIHdpbGwgbm90IGJlIHVzZWQuIiAKKyAgICAgICAgICAgIH0sCiAg
ICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCiAgICAgICAgICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYTJiMWQyNGI0ODE2MTU4OWNm
YWU0YzQ0NmU5ZWUzNGIzYmFkNzJmNi4uMGE3YTM3ZTViYzVlNzU5M2U3YTE0MzM5MmU4NTBhY2Q1
YTc2MWU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApA
QCAtNTQsNiArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCcm93c2Vy
Q2FjaGUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCcm93c2VyQ29va2llcygpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBzZXRDYWNoZURpc2FibGVkKGJvb2wpIHsgfQogCiAgICAgYm9vbCBk
b0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKFBhZ2UqIGZyb250ZW5kUGFnZSwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggNGQ1MGRjNzZhMjdjMzMxYWQzMGI2NGUx
ODUxYTRhOTkyNzBiZDZlYy4uZTQ3YTAwNDI5MGY0OGU1ZmY3ZjdlNGI4Nzk2YjVmMGI1YTVmYjc3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcApAQCAtNzMsNiArNzMsNyBAQCBuYW1lc3BhY2UgUmVzb3VyY2VBZ2VudFN0YXRl
IHsKIHN0YXRpYyBjb25zdCBjaGFyIHJlc291cmNlQWdlbnRFbmFibGVkW10gPSAicmVzb3VyY2VB
Z2VudEVuYWJsZWQiOwogc3RhdGljIGNvbnN0IGNoYXIgZXh0cmFSZXF1ZXN0SGVhZGVyc1tdID0g
ImV4dHJhUmVxdWVzdEhlYWRlcnMiOwogc3RhdGljIGNvbnN0IGNoYXIgYmFja2dyb3VuZEV2ZW50
c0NvbGxlY3Rpb25FbmFibGVkW10gPSAiYmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVk
IjsKK3N0YXRpYyBjb25zdCBjaGFyIGNhY2hlRGlzYWJsZWRbXSA9ICJjYWNoZURpc2FibGVkIjsK
IH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZCogZnJvbnRlbmQpCkBAIC0yMTUsNiArMjE2LDEyIEBAIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRMCiAgICAgcmVxdWVzdC5zZXRSZXBvcnRMb2FkVGltaW5nKHRydWUpOwogICAgIHJlcXVl
c3Quc2V0UmVwb3J0UmF3SGVhZGVycyh0cnVlKTsKIAorICAgIGlmIChtX3N0YXRlLT5nZXRCb29s
ZWFuKFJlc291cmNlQWdlbnRTdGF0ZTo6Y2FjaGVEaXNhYmxlZCkpIHsKKyAgICAgICAgcmVxdWVz
dC5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7CisgICAgICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKCJQcmFnbWEiLCAibm8tY2FjaGUiKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIkNhY2hlLUNvbnRyb2wiLCAibm8tY2FjaGUiKTsKKyAg
ICB9CisKICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2sgPSBjcmVhdGVTY3Jp
cHRDYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlLCB0
cnVlKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNhbGxTdGFja1ZhbHVlOwogICAgIGlm
IChjYWxsU3RhY2spCkBAIC00MjgsMTIgKzQzNSwxNSBAQCB2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmVuYWJsZSgpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0YXRlLT5zZXRCb29sZWFu
KFJlc291cmNlQWdlbnRTdGF0ZTo6cmVzb3VyY2VBZ2VudEVuYWJsZWQsIHRydWUpOwogICAgIG1f
aW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCh0aGlzKTsKKwor
ICAgIG1fY2xpZW50LT5zZXRDYWNoZURpc2FibGVkKG1fc3RhdGUtPmdldEJvb2xlYW4oUmVzb3Vy
Y2VBZ2VudFN0YXRlOjpjYWNoZURpc2FibGVkKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiB7CiAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVh
bihSZXNvdXJjZUFnZW50U3RhdGU6OnJlc291cmNlQWdlbnRFbmFibGVkLCBmYWxzZSk7CiAgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JSZXNvdXJjZUFnZW50KDApOworICAg
IG1fY2xpZW50LT5zZXRDYWNoZURpc2FibGVkKGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpzZXRVc2VyQWdlbnRPdmVycmlkZShFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50KQpAQCAtNDkyLDYgKzUwMiwxMiBAQCB2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmNsZWFyQnJvd3NlckNvb2tpZXMoRXJyb3JTdHJpbmcqKQogICAgIG1fY2xpZW50
LT5jbGVhckJyb3dzZXJDb29raWVzKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6c2V0Q2FjaGVEaXNhYmxlZChFcnJvclN0cmluZyosIGJvb2wgY2FjaGVEaXNhYmxlZCkKK3sK
KyAgICBtX2NsaWVudC0+c2V0Q2FjaGVEaXNhYmxlZChjYWNoZURpc2FibGVkKTsKKyAgICBtX3N0
YXRlLT5zZXRCb29sZWFuKFJlc291cmNlQWdlbnRTdGF0ZTo6Y2FjaGVEaXNhYmxlZCwgY2FjaGVE
aXNhYmxlZCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6bWFpbkZyYW1lTmF2
aWdhdGVkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgbV9yZXNvdXJjZXNEYXRhLT5j
bGVhcihtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCBkNjczOTkzNjU0YjE0
ZmU0N2ExMWE4ZjFiYTcxMDljYWM2NjViZWJmLi43OTM3ZDdiYjI3NmQ5YTRkZWJkODQ3Y2JlYjU4
ZDkwMmVlN2Q1NTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGNsZWFyQnJvd3NlckNhY2hlKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBjbGVhckJyb3dzZXJD
b29raWVzKEVycm9yU3RyaW5nKik7CisgICAgdm9pZCBzZXRDYWNoZURpc2FibGVkKEVycm9yU3Ry
aW5nKiwgYm9vbCBjYWNoZURpc2FibGVkKTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNw
ZWN0b3JDbGllbnQqLCBJbnNwZWN0b3JTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMKaW5kZXggMDI5YzM5N2ZhODQw
MGVlNmJlZTU5MDNhNjVlNGM1MGExNWNjNDQzMi4uNjIzMjg4ZjlmNTJlYzhkMGJlNTY1YTM4YmVj
OWQyNDA0OTI4NmI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9OZXR3b3JrTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCkBAIC0zMiw3ICszMiwxMSBAQCBXZWJJbnNwZWN0b3Iu
TmV0d29ya01hbmFnZXIgPSBmdW5jdGlvbigpCiB7CiAgICAgV2ViSW5zcGVjdG9yLk9iamVjdC5j
YWxsKHRoaXMpOwogICAgIHRoaXMuX2Rpc3BhdGNoZXIgPSBuZXcgV2ViSW5zcGVjdG9yLk5ldHdv
cmtEaXNwYXRjaGVyKHRoaXMpOworICAgIGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY2FjaGVE
aXNhYmxlZC5nZXQoKSkKKyAgICAgICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQodHJ1
ZSk7CiAgICAgTmV0d29ya0FnZW50LmVuYWJsZSgpOworICAgIAorICAgIFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy5jYWNoZURpc2FibGVkLmFkZENoYW5nZUxpc3RlbmVyKHRoaXMuX2NhY2hlRGlzYWJs
ZWRTZXR0aW5nQ2hhbmdlZC5iaW5kKHRoaXMpKTsKIH0KIAogV2ViSW5zcGVjdG9yLk5ldHdvcmtN
YW5hZ2VyLkV2ZW50VHlwZXMgPSB7CkBAIC02Miw2ICs2NiwxMSBAQCBXZWJJbnNwZWN0b3IuTmV0
d29ya01hbmFnZXIucHJvdG90eXBlID0gewogICAgIGluZmxpZ2h0UmVzb3VyY2VGb3JVUkw6IGZ1
bmN0aW9uKHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLl9pbmZs
aWdodFJlc291cmNlc0J5VVJMW3VybF07CisgICAgfSwKKyAgICAKKyAgICBfY2FjaGVEaXNhYmxl
ZFNldHRpbmdDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIE5ldHdvcmtB
Z2VudC5zZXRDYWNoZURpc2FibGVkKGV2ZW50LmRhdGEpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKaW5kZXggNzFmYzY0NTc0
OThjNDllYzU5Y2U0ZDE5NWRmZGQ5ZWE2MDk0YzE0MC4uZjgwYzZkNzRlNjhhNGI0ZWUwMTM3OWIx
OGEwZmE2ODQ0OTEyMzIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TZXR0aW5ncy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NldHRpbmdzLmpzCkBAIC01Myw3ICs1Myw4IEBAIHZhciBQcmVmZXJlbmNlcyA9IHsKICAg
ICBzYXZlQXNBdmFpbGFibGU6IGZhbHNlLAogICAgIHVzZUxvd2VyQ2FzZU1lbnVUaXRsZXNPbldp
bmRvd3M6IGZhbHNlLAogICAgIGNhbkluc3BlY3RXb3JrZXJzOiBmYWxzZSwKLSAgICBjYW5DbGVh
ckNhY2hlQW5kQ29va2llczogZmFsc2UKKyAgICBjYW5DbGVhckNhY2hlQW5kQ29va2llczogZmFs
c2UsCisgICAgY2FuRGlzYWJsZUNhY2hlOiBmYWxzZQogfQogCiBXZWJJbnNwZWN0b3IuU2V0dGlu
Z3MgPSBmdW5jdGlvbigpCkBAIC04Miw2ICs4Myw3IEBAIFdlYkluc3BlY3Rvci5TZXR0aW5ncyA9
IGZ1bmN0aW9uKCkKICAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmcoImRvbUJyZWFr
cG9pbnRzIiwgW10pOwogICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygieGhyQnJl
YWtwb2ludHMiLCBbXSk7CiAgICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJ3b3Jr
ZXJJbnNwZWN0aW9uRW5hYmxlZCIsIFtdKTsKKyAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlvblNl
dHRpbmcoImNhY2hlRGlzYWJsZWQiLCBmYWxzZSk7CiAKICAgICAvLyBJZiB0aGVyZSBhcmUgdG9v
IG1hbnkgYnJlYWtwb2ludHMgaW4gYSBzdG9yYWdlLCBpdCBpcyBsaWtlbHkgZHVlIHRvIGEgcmVj
ZW50IGJ1ZyB0aGF0IGNhdXNlZAogICAgIC8vIHBlcmlvZGljYWwgYnJlYWtwb2ludHMgZHVwbGlj
YXRpb24gbGVhZGluZyB0byBpbnNwZWN0b3Igc2xvd25lc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVuLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcwppbmRleCBiZGY0OWI2
Y2Q3YWFkODcyNWE1MmQ4ODBlOWNhNGQxMTQwMGQyMTVmLi45OTJiZjhhZDVjNzE4NjkyNmVmODll
MjA5NTE5ODBlZGZmYmJhYTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVuLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMKQEAgLTQ1LDYgKzQ1LDExIEBAIFdlYkluc3Bl
Y3Rvci5TZXR0aW5nc1NjcmVlbiA9IGZ1bmN0aW9uKCkKICAgICAgICAgWyBXZWJJbnNwZWN0b3Iu
U3R5bGVzU2lkZWJhclBhbmUuQ29sb3JGb3JtYXQuUkdCLCAiUkdCOiByZ2IoMTI4LCAyNTUsIDI1
NSkiIF0sCiAgICAgICAgIFsgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNvbG9yRm9y
bWF0LkhTTCwgIkhTTDogaHNsKDMwMCwgODAlLCA5MCUpIiBdIF0sIFdlYkluc3BlY3Rvci5zZXR0
aW5ncy5jb2xvckZvcm1hdCkpOwogCisgICAgaWYgKFByZWZlcmVuY2VzLmNhbkRpc2FibGVDYWNo
ZSkgeworICAgICAgICBwID0gdGhpcy5fYXBwZW5kU2VjdGlvbihXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIk5ldHdvcmsiKSk7CisgICAgICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2ti
b3hTZXR0aW5nKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGlzYWJsZSBjYWNoZSIpLCBXZWJJbnNw
ZWN0b3Iuc2V0dGluZ3MuY2FjaGVEaXNhYmxlZCkpOworICAgIH0KKwogICAgIHAgPSB0aGlzLl9h
cHBlbmRTZWN0aW9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29uc29sZSIpKTsKICAgICBwLmFw
cGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkxvZyBYTUxIdHRwUmVxdWVzdHMiKSwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLm1vbml0b3Jp
bmdYSFJFbmFibGVkKSk7CiAgICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNl
dHRpbmcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcmVzZXJ2ZSBsb2cgdXBvbiBuYXZpZ2F0aW9u
IiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5wcmVzZXJ2ZUNvbnNvbGVMb2cpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMDVkNDYwOGE5MTQwZmE0NTZjMDBjMDA5MDAxNmRjOGQ1OTc1
MmIxYy4uNjQ4ZGQyMDc2OTFhNjUxYWQ0NTljNzUzZjQyYWZmZmNjNjRiZmVmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMSBAQAogMjAxMS0wNy0xOSAgVnNldm9sb2Qg
Vmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgc3VwcG9ydCBmb3IgZGlzYWJsaW5nIGNhY2hlIGluIHdlYiBpbnNwZWN0b3IuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDA5NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0luc3BlY3RvckNs
aWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnRJbXBsOjpzZXRD
YWNoZURpc2FibGVkKToKKyAgICAgICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oOgorICAg
ICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkRldlRvb2xzQWdlbnRJbXBsOjpzZXRDYWNoZURpc2FibGVkKToKKyAgICAgICAgKiBzcmMvV2Vi
RGV2VG9vbHNBZ2VudEltcGwuaDoKKyAgICAgICAgKiBzcmMvanMvRGV2VG9vbHMuanM6CisgICAg
ICAgICgpOgorCisyMDExLTA3LTE5ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0u
b3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbmFtZSBhZ2VudElkZW50aWZpZXJQcmVm
aXggdG8gcHJvY2Vzc0lkLCBtb3ZlIG91dCBmcm9tIHBhZ2UgYWdlbnQgYW5kIG1ha2Ugc3RhdGlj
LgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3MjkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBs
LmNwcAppbmRleCAwZjU5NDU0NGVmZWEyZjZkZjgzODBjM2EzZmJkYmRjZmEwNGZiYjVmLi4yZjcw
ZWY4MTJjZmY5MTVmYTczMWJiOTNmMTIxMTUwZDEwYmZiMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcApAQCAtMTA2LDYgKzEw
NiwxMiBAQCB2b2lkIEluc3BlY3RvckNsaWVudEltcGw6OmNsZWFyQnJvd3NlckNvb2tpZXMoKQog
ICAgICAgICBhZ2VudC0+Y2xlYXJCcm93c2VyQ29va2llcygpOwogfQogCit2b2lkIEluc3BlY3Rv
ckNsaWVudEltcGw6OnNldENhY2hlRGlzYWJsZWQoYm9vbCBjYWNoZURpc2FibGVkKQoreworICAg
IGlmIChXZWJEZXZUb29sc0FnZW50SW1wbCogYWdlbnQgPSBkZXZUb29sc0FnZW50KCkpCisgICAg
ICAgIGFnZW50LT5zZXRDYWNoZURpc2FibGVkKGNhY2hlRGlzYWJsZWQpOworfQorCiBXZWJEZXZU
b29sc0FnZW50SW1wbCogSW5zcGVjdG9yQ2xpZW50SW1wbDo6ZGV2VG9vbHNBZ2VudCgpCiB7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkRldlRvb2xzQWdlbnRJbXBsKj4obV9pbnNwZWN0ZWRX
ZWJWaWV3LT5kZXZUb29sc0FnZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCmluZGV4IDJiM2E4MGIwZjc1MzY2Yjg1MDVhYWIwYWI5
Y2M3MjQ2MTVhYjY4MDMuLmUwODY0ZDU5M2U1MmIxYzBjNjhlMTVlOTk1YzAwYWFmMWFhYjlkMWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudElt
cGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBs
LmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQnJv
d3NlckNhY2hlKCk7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQnJvd3NlckNvb2tpZXMoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q2FjaGVEaXNhYmxlZChib29sKTsKIHByaXZhdGU6CiAgICAgV2Vi
RGV2VG9vbHNBZ2VudEltcGwqIGRldlRvb2xzQWdlbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCmluZGV4IDFkYmFmODNi
MDllYWY1MDI3ZjJlNTI0MjMxMGI2NzQ1NGY3YjkxMzQuLjg3NTFhZDVkODJjMzJhNTQzOGMzODFk
MjExYzZkM2JiN2ZkM2FlMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJN
ZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIK
ICNpbmNsdWRlICJQYWdlT3ZlcmxheS5oIgpAQCAtMzE2LDYgKzMxNywxMSBAQCB2b2lkIFdlYkRl
dlRvb2xzQWdlbnRJbXBsOjpjbGVhckJyb3dzZXJDb29raWVzKCkKICAgICBtX2NsaWVudC0+Y2xl
YXJCcm93c2VyQ29va2llcygpOwogfQogCit2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpzZXRD
YWNoZURpc2FibGVkKGJvb2wgY2FjaGVEaXNhYmxlZCkKK3sKKyAgICBtZW1vcnlDYWNoZSgpLT5z
ZXREaXNhYmxlZChjYWNoZURpc2FibGVkKTsKK30KKwogLy8gRklYTUU6IHJlbW92ZSBvbmNlIHJl
bmFtZWQgdG8gc2V0UHJvY2Vzc0lkIGRvd25zdHJlYW0uCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJ
bXBsOjpzZXRBZ2VudElkZW50aWZpZXJQcmVmaXgoY29uc3QgV2ViU3RyaW5nJiBwcmVmaXgpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwu
aAppbmRleCA4MDc1YzYyNzMwN2QwY2Y1Y2FiNjg1NDg2NzQzOWY4ZGNmYmJlMmVjLi45YjQ3ZGQx
MTQ5ZDdjZWRiMGYxYjk0ZmIxYmY4NjEzOWExZGEwMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKQEAgLTk1LDYgKzk1LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQnJvd3NlckNhY2hlKCk7CiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyQnJvd3NlckNvb2tpZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2Fj
aGVEaXNhYmxlZChib29sKTsKIAogICAgIGludCBob3N0SWQoKSB7IHJldHVybiBtX2hvc3RJZDsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5q
cyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCmluZGV4IDkwNWMw
ODM0ZjcxMjQ5OTY3NTFmMTM4ZDE1ZWI4NGMyYWYwOTAxMWQuLmI1ZTJkZDdmMDdhNjFhMDdjYTgw
OGIyYzc2NTQzYzlmMGMwZDliMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL2pzL0RldlRvb2xzLmpzCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0Rl
dlRvb2xzLmpzCkBAIC01NCw2ICs1NCw3IEBAIHZhciBjb250ZXh0ID0ge307ICAvLyBVc2VkIGJ5
IFdlYkNvcmUncyBpbnNwZWN0b3Igcm91dGluZXMuCiAgICAgUHJlZmVyZW5jZXMudXNlTG93ZXJD
YXNlTWVudVRpdGxlc09uV2luZG93cyA9IHRydWU7CiAgICAgUHJlZmVyZW5jZXMuY2FuSW5zcGVj
dFdvcmtlcnMgPSB0cnVlOwogICAgIFByZWZlcmVuY2VzLmNhbkNsZWFyQ2FjaGVBbmRDb29raWVz
ID0gdHJ1ZTsKKyAgICBQcmVmZXJlbmNlcy5jYW5EaXNhYmxlQ2FjaGUgPSB0cnVlOwogfSkoKTsK
IAogLy8gUmVjb2duaXplIFdlYlAgYXMgYSB2YWxpZCBpbWFnZSBtaW1lIHR5cGUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101319</attachid>
            <date>2011-07-19 08:00:55 -0700</date>
            <delta_ts>2011-07-20 14:17:11 -0700</delta_ts>
            <desc>Patch with comments addressed (rebaselined)</desc>
            <filename>bug-64097-20110719190053.patch</filename>
            <type>text/plain</type>
            <size>28784</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyNTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0ZGE0N2MwNDgzNjQyNTAxMjFjMDQ5
MGQ0NGQyZmJiZDQ5N2FhY2U3Li43OTE1MTY4OGQ4ZWE0NGIxMTc2ZmU0MWEzMmU0MGQ5MzhhNjMz
NzFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDctMTkgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBv
cnQgZm9yIGRpc2FibGluZyBjYWNoZSBpbiB3ZWIgaW5zcGVjdG9yLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwOTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0KToKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNo
ZS1tZW1vcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNoZS1tZW1vcnkuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2Fj
aGUteGhycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhw
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAgICAgICogcGxh
dGZvcm0vd2luL1NraXBwZWQ6CisKIDIwMTEtMDctMTkgIElseWEgVGlraG9ub3Zza3kgIDxsb2lz
bG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGltcGxlbWVudCBpbXBv
cnQvZXhwb3J0IGZvciB0aW1lbGluZSBkYXRhLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwppbmRleCBhY2YyNmQ1OTczY2RmY2JiODNj
NWIwOWZhYmI0NmY5NTUyZjZhMjRmLi5lMzQ1YTE0ZGQ0YjI2YThhY2JmYTU5OTFiYTkyNGMzYzJi
YzY2N2ZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNw
ZWN0b3ItdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNw
ZWN0b3ItdGVzdC5qcwpAQCAtMjYzLDcgKzI2Myw3IEBAIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1
YWxzID0gZnVuY3Rpb24oZXhwZWN0ZWQsIGZvdW5kLCBtZXNzYWdlKQogCiBJbnNwZWN0b3JUZXN0
LmFzc2VydFRydWUgPSBmdW5jdGlvbihmb3VuZCwgbWVzc2FnZSkKIHsKLSAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWZvdW5kKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dEVxdWFscyh0cnVlLCAhIWZvdW5kLCBtZXNzYWdlKTsKIH0KIAogSW5zcGVjdG9yVGVzdC5zYWZl
V3JhcCA9IGZ1bmN0aW9uKGZ1bmMsIG9uZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVt
b3J5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLW1lbW9yeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTg2YTI2ZDQ3MzlkNjNmMTZiYjAyZTc0MDIzM2Q2OWRiYjZiNTI0NwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNh
YmxlLWNhY2hlLW1lbW9yeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMjY6IEZpcnN0IHR3byBpbWFnZXMgbG9hZGVkLgorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDM2OiBEb25lLgorVGVzdHMgZGlzYWJsaW5nIGNhY2hlIGZyb20gaW5zcGVjdG9yLgor
CisKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVz
b3VyY2UucGhwP3R5cGU9aW1hZ2UmcmFuZG9tPTEmY2FjaGVkPTEKK2h0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Um
cmFuZG9tPTEmY2FjaGVkPTEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNo
ZS1tZW1vcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGU3NzM3MDQyY2MxMmRlMzFhMzQ3NTVjMWU2YTky
YjEyOTMxYTc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0bWwKQEAgLTAsMCAr
MSw5MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vbmV0d29yay10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CitmdW5jdGlvbiBsb2FkSW1hZ2UoY2FsbGJhY2spCit7CisgICAgdmFyIGltYWdl
ID0gbmV3IEltYWdlKCk7CisgICAgaW1hZ2Uub25sb2FkID0gY2FsbGJhY2s7CisgICAgaW1hZ2Uu
c3JjID0gInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZyYW5kb209MSZjYWNoZWQ9
MSI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZSk7Cit9CisKK2Z1bmN0aW9u
IGxvYWREYXRhKCkKK3sKKyAgICBsb2FkSW1hZ2UoaW1hZ2VMb2FkZWQxKTsKK30KKworZnVuY3Rp
b24gaW1hZ2VMb2FkZWQxKCkKK3sKKyAgICBsb2FkSW1hZ2UoaW1hZ2VMb2FkZWQyKTsKK30KKwor
ZnVuY3Rpb24gaW1hZ2VMb2FkZWQyKCkKK3sKKyAgICBjb25zb2xlLmxvZygiRmlyc3QgdHdvIGlt
YWdlcyBsb2FkZWQuIik7Cit9CisKK2Z1bmN0aW9uIGNhY2hlRGlzYWJsZWQoKQoreworICAgIGxv
YWRJbWFnZShhbGxJbWFnZXNMb2FkZWQpOworfQorCitmdW5jdGlvbiBhbGxJbWFnZXNMb2FkZWQo
KQoreworICAgIGNvbnNvbGUubG9nKCJEb25lLiIpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnBy
b3RvdHlwZSwgImFkZE1lc3NhZ2UiLCBzdGVwMik7CisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluUGFnZSgibG9hZERhdGEoKSIpOworCisgICAgZnVuY3Rpb24gc3RlcDIobXNnKQorICAgIHsK
KyAgICAgICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQodHJ1ZSwgc3RlcDMpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKG1zZykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLCAiYWRkTWVz
c2FnZSIsIHN0ZXA0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2Fj
aGVEaXNhYmxlZCgpIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQobXNnKQorICAgIHsK
KyAgICAgICAgLy8gaW5zcGVjdG9yLXRlc3QuanMgYXBwZWFycyBpbiBuZXR3b3JrIHBhbmVsIG9j
Y2FzaW9uYWxseSBpbiBTYWZhcmkgb24KKyAgICAgICAgLy8gTWFjLCBzbyBjaGVja2luZyB0d28g
bGFzdCByZXNvdXJjZXMuCisgICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rv
ci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoOworICAgICAgICB2YXIgcmVzb3VyY2Ux
ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAt
IDJdOworICAgICAgICB2YXIgcmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3Jr
LnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworICAgICAgICByZXNvdXJjZTEucmVxdWVz
dENvbnRlbnQoY29udGVudExvYWRlZCk7CisgICAgICAgIHJlc291cmNlMi5yZXF1ZXN0Q29udGVu
dChjb250ZW50TG9hZGVkKTsKKyAgICB9CisKKyAgICB2YXIgY29udGVudExvYWRlZENvdW50ID0g
MDsKKyAgICBmdW5jdGlvbiBjb250ZW50TG9hZGVkKCkKKyAgICB7CisgICAgICAgIGlmICgrK2Nv
bnRlbnRMb2FkZWRDb3VudCAhPT0gMikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2
YXIgcmVzb3VyY2VzQ291bnQgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2Vz
Lmxlbmd0aDsKKyAgICAgICAgdmFyIHJlc291cmNlMSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXNvdXJjZXNbcmVzb3VyY2VzQ291bnQgLSAyXTsKKyAgICAgICAgdmFyIHJlc291cmNl
MiA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbcmVzb3VyY2VzQ291bnQg
LSAxXTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXNvdXJjZTEudXJsKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UyLnVybCk7CisgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShyZXNvdXJjZTEuY29udGVudCAhPT0gcmVzb3VyY2Uy
LmNvbnRlbnQsICJTZWNvbmQgYW5kIHRoaXJkIHJlc291cmNlcyBkaWZmZXIiKTsKKyAgICAgICAg
TmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQoZmFsc2UsIHN0ZXA1KTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBzdGVwNShtc2cpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBs
ZXRlVGVzdCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCkiPgorICAgIDxwPlRlc3RzIGRpc2FibGluZyBjYWNoZSBmcm9tIGluc3BlY3Rvci48
L3A+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRp
c2FibGUtY2FjaGUteGhycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVmYTFmYjZhOTNjYTUw
YjFlNTdiOWQyZTg4N2UwYjBmMGE0YjI4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIzOiBG
aXJzdCBYSFIgbG9hZGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDMzOiBEb25lLgorVGVzdHMg
ZGlzYWJsaW5nIGNhY2hlIGZyb20gaW5zcGVjdG9yLgorCitodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD9yYW5kb209MSZjYWNoZWQ9
MQoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNv
dXJjZS5waHA/cmFuZG9tPTEmY2FjaGVkPTEKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3JhbmRvbT0xJmNhY2hlZD0xCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29y
ay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YjQyNmFhYmJhNTcwMmI4ZjY3MTgxYTkwODE0ODY1MDQ4YWRmZGNmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2Fi
bGUtY2FjaGUteGhycy5odG1sCkBAIC0wLDAgKzEsMTAyIEBACis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9uZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvYWRYSFIo
Y2FsbGJhY2spCit7CisgICAgZG9YSFIoIkdFVCIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3Jh
bmRvbT0xJmNhY2hlZD0xIiwgdHJ1ZSwgY2FsbGJhY2spOworfQorCitmdW5jdGlvbiBsb2FkRGF0
YSgpCit7CisgICAgbG9hZFhIUih4aHJMb2FkZWQxKTsKK30KKworZnVuY3Rpb24geGhyTG9hZGVk
MSgpCit7CisgICAgbG9hZFhIUih4aHJMb2FkZWQyKTsKK30KKworZnVuY3Rpb24geGhyTG9hZGVk
MigpCit7CisgICAgY29uc29sZS5sb2coIkZpcnN0IFhIUiBsb2FkZWQuIik7Cit9CisKK2Z1bmN0
aW9uIGNhY2hlRGlzYWJsZWQoKQoreworICAgIGxvYWRYSFIoYWxsWEhSc0xvYWRlZCk7Cit9CisK
K2Z1bmN0aW9uIGFsbFhIUnNMb2FkZWQoKQoreworICAgIGNvbnNvbGUubG9nKCJEb25lLiIpOwor
fQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICAvLyBTaW5jZSB0aGlzIHRlc3QgY291bGQgYmUg
cnVuIHRvZ2V0aGVyIHdpdGggb3RoZXIgaW5zcGVjdG9yIGJhY2tlbmQgY2FjaGUKKyAgICAvLyB0
ZXN0cywgd2UgbmVlZCB0byByZXNldCBzaXplIGxpbWl0cyB0byBkZWZhdWx0IG9uZXMuCisgICAg
SW5zcGVjdG9yVGVzdC5yZXNldEluc3BlY3RvclJlc291cmNlc0RhdGEoc3RlcDEpOworCisgICAg
ZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVy
KFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUsICJhZGRNZXNzYWdlIiwgc3RlcDIp
OworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkRGF0YSgpIik7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDIobXNnKQorICAgIHsKKyAgICAgICAgTmV0d29ya0Fn
ZW50LnNldENhY2hlRGlzYWJsZWQodHJ1ZSwgc3RlcDMpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHN0ZXAzKG1zZykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJ
bnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLCAiYWRkTWVzc2FnZSIsIHN0ZXA0KTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2FjaGVEaXNhYmxlZCgpIik7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQobXNnKQorICAgIHsKKyAgICAgICAgLy8gaW5zcGVj
dG9yLXRlc3QuanMgYXBwZWFycyBpbiBuZXR3b3JrIHBhbmVsIG9jY2FzaW9uYWxseSBpbiBTYWZh
cmkgb24KKyAgICAgICAgLy8gTWFjLCBzbyBjaGVja2luZyB0d28gbGFzdCByZXNvdXJjZXMuCisg
ICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5y
ZXNvdXJjZXMubGVuZ3RoOworICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2ViSW5zcGVjdG9yLnBh
bmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDNdOworICAgICAgICB2YXIg
cmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJj
ZXNDb3VudCAtIDJdOworICAgICAgICB2YXIgcmVzb3VyY2UzID0gV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworICAgICAgICByZXNvdXJj
ZTEucmVxdWVzdENvbnRlbnQoY29udGVudExvYWRlZCk7CisgICAgICAgIHJlc291cmNlMi5yZXF1
ZXN0Q29udGVudChjb250ZW50TG9hZGVkKTsKKyAgICAgICAgcmVzb3VyY2UzLnJlcXVlc3RDb250
ZW50KGNvbnRlbnRMb2FkZWQpOworICAgIH0KKworICAgIHZhciBjb250ZW50TG9hZGVkQ291bnQg
PSAwOworICAgIGZ1bmN0aW9uIGNvbnRlbnRMb2FkZWQoKQorICAgIHsKKyAgICAgICAgaWYgKCsr
Y29udGVudExvYWRlZENvdW50ICE9PSAzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHZhciByZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJj
ZXMubGVuZ3RoOworICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDNdOworICAgICAgICB2YXIgcmVzb3Vy
Y2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3Vu
dCAtIDJdOworICAgICAgICB2YXIgcmVzb3VyY2UzID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3
b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworCisgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KHJlc291cmNlMS51cmwpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdChyZXNvdXJjZTIudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVz
b3VyY2UzLnVybCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShyZXNvdXJjZTEu
Y29udGVudCA9PT0gcmVzb3VyY2UyLmNvbnRlbnQsICJGaXJzdCBhbmQgc2Vjb25kIHJlc291cmNl
cyBhcmUgZXF1YWwiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKHJlc291cmNl
Mi5jb250ZW50ICE9PSByZXNvdXJjZTMuY29udGVudCwgIlNlY29uZCBhbmQgdGhpcmQgcmVzb3Vy
Y2VzIGRpZmZlciIpOworICAgICAgICBOZXR3b3JrQWdlbnQuc2V0Q2FjaGVEaXNhYmxlZChmYWxz
ZSwgc3RlcDUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA1KG1zZykKKyAgICB7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdHMgZGlzYWJsaW5n
IGNhY2hlIGZyb20gaW5zcGVjdG9yLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVz
b3VyY2UucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvcmVzb3VyY2UucGhwCmluZGV4IDNlMWYxODVlMWZkZTI2OGIyZWJmZWZhMWQwMDE3ZGMw
OTM1MTdlZGIuLmMyYjZmMWNjY2VlMmNiYzhjNjM4OWU2ZjcxOGVmZTU5NTVmZjA2NDAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L3Jlc291cmNlLnBocAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHAKQEAgLTgsMTkgKzgsMzcgQEAKICAgICAkanNjb250
ZW50ID0gJF9HRVRbImpzY29udGVudCJdOwogICAgICRjaHVua2VkID0gJF9HRVRbImNodW5rZWQi
XTsKICAgICAkcmFuZG9tID0gJF9HRVRbInJhbmRvbSJdOwotCi0gICAgIyBFbmFibGUgZ3ppcCBj
b21wcmVzc2lvbiBpZiBuZWVkZWQKLSAgICBpZiAoJGd6aXApCi0gICAgICAgIG9iX3N0YXJ0KCJv
Yl9nemhhbmRsZXIiKTsKKyAgICAkY2FjaGVkID0gJF9HRVRbImNhY2hlZCJdOwogCiAgICAgIyBX
YWl0IGJlZm9yZSBzZW5kaW5nIHJlc3BvbnNlCiAgICAgaWYgKCR3YWl0KQogICAgICAgICB1c2xl
ZXAoJHdhaXQgKiAxMDAwKTsKIAorICAgICMgRXhpdCBlYXJseSBpZiB3ZSByZXR1cm4gMzA0IGNv
ZGUuCisgICAgaWYgKCRjYWNoZWQgJiYgJF9TRVJWRVJbIkhUVFBfSUZfTU9ESUZJRURfU0lOQ0Ui
XSkgeworICAgICAgICBoZWFkZXIoIkhUVFAvMS4wIDMwNCBOb3QgTW9kaWZpZWQiKTsKKyAgICAg
ICAgZXhpdDsKKyAgICB9CisKKyAgICAjIEVuYWJsZSBnemlwIGNvbXByZXNzaW9uIGlmIG5lZWRl
ZAorICAgIGlmICgkZ3ppcCkKKyAgICAgICAgb2Jfc3RhcnQoIm9iX2d6aGFuZGxlciIpOworCiAg
ICAgIyBTZW5kIGhlYWRlcnMKLSAgICBoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEgRGVjIDIwMDMg
MTY6MDA6MDAgR01UIik7Ci0gICAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8t
Y2FjaGUsIG11c3QtcmV2YWxpZGF0ZSIpOwotICAgIGhlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIp
OworICAgIGlmICgkY2FjaGVkKSB7CisgICAgICAgICRtYXhfYWdlID0gMTIgKiAzMSAqIDI0ICog
NjAgKiA2MDsgLy9vbmUgeWVhcgorICAgICAgICAkZXhwaXJlcyA9IGdtZGF0ZShEQVRFX1JGQzEx
MjMsIHRpbWUoKSArICRtYXhfYWdlKTsKKyAgICAgICAgJGxhc3RfbW9kaWZpZWQgPSBnbWRhdGUo
REFURV9SRkMxMTIzLCB0aW1lKCkgLSAkbWF4X2FnZSk7CisKKyAgICAgICAgaGVhZGVyKCJDYWNo
ZS1Db250cm9sOiBwdWJsaWMsIG1heC1hZ2U9IiAuIDUqJG1heF9hZ2UpOworICAgICAgICBoZWFk
ZXIoIkNhY2hlLWNvbnRyb2w6IG1heC1hZ2U9MCIpOworICAgICAgICBoZWFkZXIoIkV4cGlyZXM6
ICIgLiAkZXhwaXJlcyk7CisgICAgICAgIGhlYWRlcigiTGFzdC1Nb2RpZmllZDogIiAuICRsYXN0
X21vZGlmaWVkKTsKKyAgICB9IGVsc2UgeworICAgICAgICBoZWFkZXIoIkV4cGlyZXM6IFRodSwg
MDEgRGVjIDIwMDMgMTY6MDA6MDAgR01UIik7CisgICAgICAgIGhlYWRlcigiQ2FjaGUtQ29udHJv
bDogbm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUiKTsKKyAgICAgICAgaGVhZGVy
KCJQcmFnbWE6IG5vLWNhY2hlIik7CisgICAgfQogICAgIGlmICgkdHlwZSA9PSAianMiKQogICAg
ICAgICBoZWFkZXIoIkNvbnRlbnQtVHlwZTp0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9VVRGLTgi
KTsKICAgICBlbHNlIGlmICgkdHlwZSA9PSAiaW1hZ2UiKQpAQCAtOTQsNiArMTEyLDggQEAgX19m
b28oPD9waHAgZWNobygkanNkZWxheSk/Pik7CiAgICAgICAgICAgICAgICAgZmx1c2goKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGVjaG8oIndvcmxkIik7CisgICAgICAgICAgICBpZiAo
JHJhbmRvbSkKKyAgICAgICAgICAgICAgICBlY2hvKCI6ICIgLiByYW5kKCkpOwogICAgICAgICB9
CiAgICAgfQogPz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVk
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggNDllMjExMjgzMjA5M2Iz
OGRhYjk0NzVhNmQwOTdiODA0N2UzZThhOS4uZTI5NGI0NGM2MWI3ZGFlMjYxNTA4ZjFmMzE0MThi
NDgyMTIzMWQxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTE0NjMsNiArMTQ2Mywx
MCBAQCBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstc2l6ZS1jaHVua2VkLmh0
bWwKIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1zaXplLXN5bmMuaHRtbAog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNpemUuaHRtbAogCisjIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDA5NworaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0bWwKK2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbAorCiAj
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTQzNwogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsZWFyLWFmdGVyLWRpc2FibGVkLmh0bWwKIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4uaHRtbApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAppbmRleCBjNDk2NjZjOGY3NTljMTAyZWMwNzczMzdiMDhl
ODQyNDUzNDkyMTc0Li4zYzhlOWEwZWYxZmIxMDA4NTdiNWI3MWNlNGM4Y2NlZmVmOTE1NjhlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAtMzI2LDYgKzMyNiwxMCBAQCB3ZWJhcmNoaXZl
L3Rlc3QtbGluay1yZWwtaWNvbi5odG1sCiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25l
dHdvcmstc2l6ZS1jaHVua2VkLmh0bWwKIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0
d29yay1zaXplLXN5bmMuaHRtbAogCisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NDA5NworaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2Fi
bGUtY2FjaGUtbWVtb3J5Lmh0bWwKK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29y
ay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbAorCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01ODUxNQogY29tcG9zaXRpbmcvb3ZlcmZsb3cvY2xpcC1jb250ZW50LXVu
ZGVyLW92ZXJmbG93LWNvbnRyb2xzLmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXgg
NTk5MGRkYWNiYTA2YjU0NzA0NDEyY2NmMWFjY2ViYjhhMTA4NjYwMS4uNTFiOWFmMTAwN2UzYTZi
ZDc4NmRiYzhiYjg1M2MzYmFkMTUyMTdiMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0y
MTk5LDYgKzIxOTksMTAgQEAgZmFzdC9kb20vSFRNTE1ldGVyRWxlbWVudC9tZXRlci1zdHlsZXMu
aHRtbAogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNpemUtY2h1bmtlZC5o
dG1sCiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstc2l6ZS1zeW5jLmh0bWwK
IAorIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwOTcKK2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLW1lbW9yeS5odG1s
CitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNoZS14aHJz
Lmh0bWwKKwogIyBbUXRdIG1lZGlhL3ZpZGVvLXBsYXliYWNrcmF0ZS5odG1sIGZhaWxzCiAjIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzQ3NgogbWVkaWEvdmlkZW8t
cGxheWJhY2tyYXRlLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9T
a2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggODRjN2NjZjEw
NzhmYzkxNjlmNzliYzI4OGEwMmQzNjdlNTQ0NTRlNy4uZWRlMTRkZGEwMWMyODA4ZTY3Mzk3ZDc0
ZTk4MGJlOWM4MTJmNGU1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Nr
aXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTUyLDYgKzUy
LDEwIEBAIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay10aW1pbmcuaHRtbAog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNpemUtY2h1bmtlZC5odG1sCiBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstc2l6ZS1zeW5jLmh0bWwKIAorIyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwOTcKK2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLW1lbW9yeS5odG1sCitodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNoZS14aHJzLmh0bWwK
KwogIyBGYWlscyA8cmRhcjovL3Byb2JsZW0vNTY3NDI4OT4KIG1lZGlhL3ZpZGVvLXNlZWstcGFz
dC1lbmQtcGF1c2VkLmh0bWwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIyNmYwZDdiOWI3OTExYmYzZWQ4YTk2
ZWUwZjk3ZDU4MzAyYjMwNzkuLjNiN2QxMzRmMmQ3YjUyNTQxYzhiMzliZWMxOTIzOWRhNzJhY2E0
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMS0wNy0xOSAgVnNldm9sb2QgVmxh
c292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQg
c3VwcG9ydCBmb3IgZGlzYWJsaW5nIGNhY2hlIGluIHdlYiBpbnNwZWN0b3IuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDA5NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNoZS1tZW1vcnkuaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2Fj
aGUteGhycy5odG1sCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3Mu
anM6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dDo6c2V0Q2FjaGVEaXNhYmxlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpk
aXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldENh
Y2hlRGlzYWJsZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuaW5mbGlnaHRSZXNv
dXJjZUZvclVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90
eXBlLl9jYWNoZURpc2FibGVkU2V0dGluZ0NoYW5nZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3MpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4pOgorCiAyMDExLTA3LTE5ICBJbHlhIFRpa2hv
bm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBp
bXBsZW1lbnQgaW1wb3J0L2V4cG9ydCBmb3IgdGltZWxpbmUgZGF0YS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9X
ZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCA3OWQ4ZTZmYzlk
YTU5Mjg0YzNlYjkyODg0YmIzM2YwZWRiYWRmZDAwLi44MDdmNjliMGU1ZWI2ZjA2ZGQyNjlhYjdm
OWI2NzFiOTgwOGQ4YTM5IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDM4CndjbVYrPjBO
TVklPE84UFYxRitkY2xpZmxOMzFhfFowQW0xWDBBLVdATExDOFBsZ3QofnYpNG1xdH50T0RtakQw
JgoKZGVsdGEgMTQKV2NtWjRYbHpHbis8XyROVUgjQHJ8dUxBJSUkX0dnUgoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCAxMjc5OTBiMTZiMTYzMjU3OTc0YjI3ZWU1
MzFmNWE2ZGU1NDU0NjE2Li5lMTliMDNiYmJlN2I4MDExOTIxMTY2NjU2YzJhY2E4ZjZjYjEwY2M2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC01MDgsNyArNTA4
LDE0IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2xlYXJCcm93
c2VyQ29va2llcyIsCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNsZWFycyBicm93
c2VyIGNvb2tpZXMuIgotICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJzZXRDYWNoZURpc2FibGVkIiwKKyAgICAgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJj
YWNoZURpc2FibGVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJDYWNoZSBk
aXNhYmxlZCBzdGF0ZS4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJUb2dnbGVzIGlnbm9yaW5nIGNhY2hlIGZvciBlYWNoIHJlcXVlc3QuIElm
IDxjb2RlPnRydWU8L2NvZGU+LCBjYWNoZSB3aWxsIG5vdCBiZSB1c2VkLiIgCisgICAgICAgICAg
ICB9LAogICAgICAgICBdLAogICAgICAgICAiZXZlbnRzIjogWwogICAgICAgICAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCmluZGV4IGEyYjFkMjRiNDgx
NjE1ODljZmFlNGM0NDZlOWVlMzRiM2JhZDcyZjYuLjBhN2EzN2U1YmM1ZTc1OTNlN2ExNDMzOTJl
ODUwYWNkNWE3NjFlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmgKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFy
QnJvd3NlckNhY2hlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQnJvd3NlckNvb2tpZXMo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FjaGVEaXNhYmxlZChib29sKSB7IH0KIAogICAg
IGJvb2wgZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZShQYWdlKiBmcm9udGVuZFBhZ2Us
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDRkNTBkYzc2YTI3YzMzMWFk
MzBiNjRlMTg1MWE0YTk5MjcwYmQ2ZWMuLmU0N2EwMDQyOTBmNDhlNWZmN2Y3ZTRiODc5NmI1ZjBi
NWE1ZmI3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKQEAgLTczLDYgKzczLDcgQEAgbmFtZXNwYWNlIFJlc291cmNlQWdl
bnRTdGF0ZSB7CiBzdGF0aWMgY29uc3QgY2hhciByZXNvdXJjZUFnZW50RW5hYmxlZFtdID0gInJl
c291cmNlQWdlbnRFbmFibGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyIGV4dHJhUmVxdWVzdEhlYWRl
cnNbXSA9ICJleHRyYVJlcXVlc3RIZWFkZXJzIjsKIHN0YXRpYyBjb25zdCBjaGFyIGJhY2tncm91
bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZFtdID0gImJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9u
RW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZURpc2FibGVkW10gPSAiY2FjaGVEaXNh
YmxlZCI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0RnJvbnRlbmQoSW5z
cGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQpAQCAtMjE1LDYgKzIxNiwxMiBAQCB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIERvY3VtZW50TAogICAgIHJlcXVlc3Quc2V0UmVwb3J0TG9hZFRpbWluZyh0cnVlKTsKICAg
ICByZXF1ZXN0LnNldFJlcG9ydFJhd0hlYWRlcnModHJ1ZSk7CiAKKyAgICBpZiAobV9zdGF0ZS0+
Z2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmNhY2hlRGlzYWJsZWQpKSB7CisgICAgICAg
IHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOworICAgICAg
ICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiUHJhZ21hIiwgIm5vLWNhY2hlIik7CisgICAg
ICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJDYWNoZS1Db250cm9sIiwgIm5vLWNhY2hl
Iik7CisgICAgfQorCiAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrID0gY3Jl
YXRlU2NyaXB0Q2FsbFN0YWNrKFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2Fw
dHVyZSwgdHJ1ZSk7CiAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBjYWxsU3RhY2tWYWx1ZTsK
ICAgICBpZiAoY2FsbFN0YWNrKQpAQCAtNDI4LDEyICs0MzUsMTUgQEAgdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjplbmFibGUoKQogICAgICAgICByZXR1cm47CiAgICAgbV9zdGF0ZS0+c2V0
Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OnJlc291cmNlQWdlbnRFbmFibGVkLCB0cnVlKTsK
ICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclJlc291cmNlQWdlbnQodGhp
cyk7CisKKyAgICBtX2NsaWVudC0+c2V0Q2FjaGVEaXNhYmxlZChtX3N0YXRlLT5nZXRCb29sZWFu
KFJlc291cmNlQWdlbnRTdGF0ZTo6Y2FjaGVEaXNhYmxlZCkpOwogfQogCiB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogewogICAgIG1fc3RhdGUtPnNl
dEJvb2xlYW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpyZXNvdXJjZUFnZW50RW5hYmxlZCwgZmFsc2Up
OwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgw
KTsKKyAgICBtX2NsaWVudC0+c2V0Q2FjaGVEaXNhYmxlZChmYWxzZSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0VXNlckFnZW50T3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKQEAgLTQ5Miw2ICs1MDIsMTIgQEAgdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpjbGVhckJyb3dzZXJDb29raWVzKEVycm9yU3RyaW5nKikKICAgICBt
X2NsaWVudC0+Y2xlYXJCcm93c2VyQ29va2llcygpOwogfQogCit2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OnNldENhY2hlRGlzYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGNhY2hlRGlzYWJs
ZWQpCit7CisgICAgbV9jbGllbnQtPnNldENhY2hlRGlzYWJsZWQoY2FjaGVEaXNhYmxlZCk7Cisg
ICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmNhY2hlRGlzYWJsZWQs
IGNhY2hlRGlzYWJsZWQpOworfQorCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1haW5G
cmFtZU5hdmlnYXRlZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIG1fcmVzb3VyY2Vz
RGF0YS0+Y2xlYXIobV9wYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlcikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggZDY3Mzk5
MzY1NGIxNGZlNDdhMTFhOGYxYmE3MTA5Y2FjNjY1YmViZi4uNzkzN2Q3YmIyNzZkOWE0ZGViZDg0
N2NiZWI1OGQ5MDJlZTdkNTU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC0xMjcsNiArMTI3LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBjbGVhckJyb3dzZXJDYWNoZShFcnJvclN0cmluZyopOwogICAgIHZvaWQgY2xlYXJC
cm93c2VyQ29va2llcyhFcnJvclN0cmluZyopOworICAgIHZvaWQgc2V0Q2FjaGVEaXNhYmxlZChF
cnJvclN0cmluZyosIGJvb2wgY2FjaGVEaXNhYmxlZCk7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50
KiwgSW5zcGVjdG9yQ2xpZW50KiwgSW5zcGVjdG9yU3RhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCmluZGV4IDAyOWMz
OTdmYTg0MDBlZTZiZWU1OTAzYTY1ZTRjNTBhMTVjYzQ0MzIuLjYyMzI4OGY5ZjUyZWM4ZDBiZTU2
NWEzOGJlYzlkMjQwNDkyODZiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcwpAQCAtMzIsNyArMzIsMTEgQEAgV2ViSW5z
cGVjdG9yLk5ldHdvcmtNYW5hZ2VyID0gZnVuY3Rpb24oKQogewogICAgIFdlYkluc3BlY3Rvci5P
YmplY3QuY2FsbCh0aGlzKTsKICAgICB0aGlzLl9kaXNwYXRjaGVyID0gbmV3IFdlYkluc3BlY3Rv
ci5OZXR3b3JrRGlzcGF0Y2hlcih0aGlzKTsKKyAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdz
LmNhY2hlRGlzYWJsZWQuZ2V0KCkpCisgICAgICAgIE5ldHdvcmtBZ2VudC5zZXRDYWNoZURpc2Fi
bGVkKHRydWUpOwogICAgIE5ldHdvcmtBZ2VudC5lbmFibGUoKTsKKyAgICAKKyAgICBXZWJJbnNw
ZWN0b3Iuc2V0dGluZ3MuY2FjaGVEaXNhYmxlZC5hZGRDaGFuZ2VMaXN0ZW5lcih0aGlzLl9jYWNo
ZURpc2FibGVkU2V0dGluZ0NoYW5nZWQuYmluZCh0aGlzKSk7CiB9CiAKIFdlYkluc3BlY3Rvci5O
ZXR3b3JrTWFuYWdlci5FdmVudFR5cGVzID0gewpAQCAtNjIsNiArNjYsMTEgQEAgV2ViSW5zcGVj
dG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICBpbmZsaWdodFJlc291cmNlRm9y
VVJMOiBmdW5jdGlvbih1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hl
ci5faW5mbGlnaHRSZXNvdXJjZXNCeVVSTFt1cmxdOworICAgIH0sCisgICAgCisgICAgX2NhY2hl
RGlzYWJsZWRTZXR0aW5nQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBO
ZXR3b3JrQWdlbnQuc2V0Q2FjaGVEaXNhYmxlZChldmVudC5kYXRhKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IDcx
ZmM2NDU3NDk4YzQ5ZWM1OWNlNGQxOTVkZmRkOWVhNjA5NGMxNDAuLmY4MGM2ZDc0ZTY4YTRiNGVl
MDEzNzliMThhMGZhNjg0NDkxMjMyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TZXR0aW5ncy5qcwpAQCAtNTMsNyArNTMsOCBAQCB2YXIgUHJlZmVyZW5jZXMg
PSB7CiAgICAgc2F2ZUFzQXZhaWxhYmxlOiBmYWxzZSwKICAgICB1c2VMb3dlckNhc2VNZW51VGl0
bGVzT25XaW5kb3dzOiBmYWxzZSwKICAgICBjYW5JbnNwZWN0V29ya2VyczogZmFsc2UsCi0gICAg
Y2FuQ2xlYXJDYWNoZUFuZENvb2tpZXM6IGZhbHNlCisgICAgY2FuQ2xlYXJDYWNoZUFuZENvb2tp
ZXM6IGZhbHNlLAorICAgIGNhbkRpc2FibGVDYWNoZTogZmFsc2UKIH0KIAogV2ViSW5zcGVjdG9y
LlNldHRpbmdzID0gZnVuY3Rpb24oKQpAQCAtODIsNiArODMsNyBAQCBXZWJJbnNwZWN0b3IuU2V0
dGluZ3MgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJk
b21CcmVha3BvaW50cyIsIFtdKTsKICAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmco
InhockJyZWFrcG9pbnRzIiwgW10pOwogICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGlu
Zygid29ya2VySW5zcGVjdGlvbkVuYWJsZWQiLCBbXSk7CisgICAgdGhpcy5pbnN0YWxsQXBwbGlj
YXRpb25TZXR0aW5nKCJjYWNoZURpc2FibGVkIiwgZmFsc2UpOwogCiAgICAgLy8gSWYgdGhlcmUg
YXJlIHRvbyBtYW55IGJyZWFrcG9pbnRzIGluIGEgc3RvcmFnZSwgaXQgaXMgbGlrZWx5IGR1ZSB0
byBhIHJlY2VudCBidWcgdGhhdCBjYXVzZWQKICAgICAvLyBwZXJpb2RpY2FsIGJyZWFrcG9pbnRz
IGR1cGxpY2F0aW9uIGxlYWRpbmcgdG8gaW5zcGVjdG9yIHNsb3duZXNzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMKaW5kZXgg
YmRmNDliNmNkN2FhZDg3MjVhNTJkODgwZTljYTRkMTE0MDBkMjE1Zi4uOTkyYmY4YWQ1YzcxODY5
MjZlZjg5ZTIwOTUxOTgwZWRmZmJiYWE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVuLmpzCkBAIC00NSw2ICs0NSwxMSBAQCBX
ZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4gPSBmdW5jdGlvbigpCiAgICAgICAgIFsgV2ViSW5z
cGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNvbG9yRm9ybWF0LlJHQiwgIlJHQjogcmdiKDEyOCwg
MjU1LCAyNTUpIiBdLAogICAgICAgICBbIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5D
b2xvckZvcm1hdC5IU0wsICJIU0w6IGhzbCgzMDAsIDgwJSwgOTAlKSIgXSBdLCBXZWJJbnNwZWN0
b3Iuc2V0dGluZ3MuY29sb3JGb3JtYXQpKTsKIAorICAgIGlmIChQcmVmZXJlbmNlcy5jYW5EaXNh
YmxlQ2FjaGUpIHsKKyAgICAgICAgcCA9IHRoaXMuX2FwcGVuZFNlY3Rpb24oV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJOZXR3b3JrIikpOworICAgICAgICBwLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0
ZUNoZWNrYm94U2V0dGluZyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRpc2FibGUgY2FjaGUiKSwg
V2ViSW5zcGVjdG9yLnNldHRpbmdzLmNhY2hlRGlzYWJsZWQpKTsKKyAgICB9CisKICAgICBwID0g
dGhpcy5fYXBwZW5kU2VjdGlvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnNvbGUiKSk7CiAg
ICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRpbmcoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJMb2cgWE1MSHR0cFJlcXVlc3RzIiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5t
b25pdG9yaW5nWEhSRW5hYmxlZCkpOwogICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hl
Y2tib3hTZXR0aW5nKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJlc2VydmUgbG9nIHVwb24gbmF2
aWdhdGlvbiIpLCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucHJlc2VydmVDb25zb2xlTG9nKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDA1ZDQ2MDhhOTE0MGZhNDU2YzAwYzAwOTAwMTZk
YzhkNTk3NTJiMWMuLjY0OGRkMjA3NjkxYTY1MWFkNDU5Yzc1M2Y0MmFmZmZjYzY0YmZlZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIwMTEtMDctMTkgIFZz
ZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogQWRkIHN1cHBvcnQgZm9yIGRpc2FibGluZyBjYWNoZSBpbiB3ZWIgaW5zcGVjdG9yLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwOTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9JbnNw
ZWN0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50SW1w
bDo6c2V0Q2FjaGVEaXNhYmxlZCk6CisgICAgICAgICogc3JjL0luc3BlY3RvckNsaWVudEltcGwu
aDoKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6c2V0Q2FjaGVEaXNhYmxlZCk6CisgICAgICAgICog
c3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmg6CisgICAgICAgICogc3JjL2pzL0RldlRvb2xzLmpz
OgorICAgICAgICAoKToKKworMjAxMS0wNy0xOSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNo
cm9taXVtLm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW5hbWUgYWdlbnRJZGVudGlm
aWVyUHJlZml4IHRvIHByb2Nlc3NJZCwgbW92ZSBvdXQgZnJvbSBwYWdlIGFnZW50IGFuZCBtYWtl
IHN0YXRpYy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY0NzI5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3Rv
ckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xp
ZW50SW1wbC5jcHAKaW5kZXggMGY1OTQ1NDRlZmVhMmY2ZGY4MzgwYzNhM2ZiZGJkY2ZhMDRmYmI1
Zi4uMmY3MGVmODEyY2ZmOTE1ZmE3MzFiYjkzZjEyMTE1MGQxMGJmYjE1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAKQEAgLTEw
Niw2ICsxMDYsMTIgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRJbXBsOjpjbGVhckJyb3dzZXJDb29r
aWVzKCkKICAgICAgICAgYWdlbnQtPmNsZWFyQnJvd3NlckNvb2tpZXMoKTsKIH0KIAordm9pZCBJ
bnNwZWN0b3JDbGllbnRJbXBsOjpzZXRDYWNoZURpc2FibGVkKGJvb2wgY2FjaGVEaXNhYmxlZCkK
K3sKKyAgICBpZiAoV2ViRGV2VG9vbHNBZ2VudEltcGwqIGFnZW50ID0gZGV2VG9vbHNBZ2VudCgp
KQorICAgICAgICBhZ2VudC0+c2V0Q2FjaGVEaXNhYmxlZChjYWNoZURpc2FibGVkKTsKK30KKwog
V2ViRGV2VG9vbHNBZ2VudEltcGwqIEluc3BlY3RvckNsaWVudEltcGw6OmRldlRvb2xzQWdlbnQo
KQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJEZXZUb29sc0FnZW50SW1wbCo+KG1faW5z
cGVjdGVkV2ViVmlldy0+ZGV2VG9vbHNBZ2VudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaAppbmRleCAyYjNhODBiMGY3NTM2NmI4NTA1
YWFiMGFiOWNjNzI0NjE1YWI2ODAzLi5lMDg2NGQ1OTNlNTJiMWMwYzY4ZTE1ZTk5NWMwMGFhZjFh
YWI5ZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JD
bGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xp
ZW50SW1wbC5oCkBAIC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBj
bGVhckJyb3dzZXJDYWNoZSgpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckJyb3dzZXJDb29raWVz
KCk7CisgICAgdmlydHVhbCB2b2lkIHNldENhY2hlRGlzYWJsZWQoYm9vbCk7CiBwcml2YXRlOgog
ICAgIFdlYkRldlRvb2xzQWdlbnRJbXBsKiBkZXZUb29sc0FnZW50KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAppbmRleCAx
ZGJhZjgzYjA5ZWFmNTAyN2YyZTUyNDIzMTBiNjc0NTRmN2I5MTM0Li44NzUxYWQ1ZDgyYzMyYTU0
MzhjMzgxZDIxMWM2ZDNiYjdmZDNhZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5j
bHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdy
b3VwLmgiCiAjaW5jbHVkZSAiUGFnZU92ZXJsYXkuaCIKQEAgLTMxNiw2ICszMTcsMTEgQEAgdm9p
ZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6Y2xlYXJCcm93c2VyQ29va2llcygpCiAgICAgbV9jbGll
bnQtPmNsZWFyQnJvd3NlckNvb2tpZXMoKTsKIH0KIAordm9pZCBXZWJEZXZUb29sc0FnZW50SW1w
bDo6c2V0Q2FjaGVEaXNhYmxlZChib29sIGNhY2hlRGlzYWJsZWQpCit7CisgICAgbWVtb3J5Q2Fj
aGUoKS0+c2V0RGlzYWJsZWQoY2FjaGVEaXNhYmxlZCk7Cit9CisKIC8vIEZJWE1FOiByZW1vdmUg
b25jZSByZW5hbWVkIHRvIHNldFByb2Nlc3NJZCBkb3duc3RyZWFtLgogdm9pZCBXZWJEZXZUb29s
c0FnZW50SW1wbDo6c2V0QWdlbnRJZGVudGlmaWVyUHJlZml4KGNvbnN0IFdlYlN0cmluZyYgcHJl
Zml4KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdl
bnRJbXBsLmgKaW5kZXggODA3NWM2MjczMDdkMGNmNWNhYjY4NTQ4Njc0MzlmOGRjZmJiZTJlYy4u
OWI0N2RkMTE0OWQ3Y2VkYjBmMWI5NGZiMWJmODYxMzlhMWRhMDM5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCkBAIC05NSw2ICs5
NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhckJyb3dzZXJDYWNoZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckJyb3dzZXJDb29raWVzKCk7CisgICAgdmlydHVhbCB2b2lk
IHNldENhY2hlRGlzYWJsZWQoYm9vbCk7CiAKICAgICBpbnQgaG9zdElkKCkgeyByZXR1cm4gbV9o
b3N0SWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2
VG9vbHMuanMgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcwppbmRl
eCA5MDVjMDgzNGY3MTI0OTk2NzUxZjEzOGQxNWViODRjMmFmMDkwMTFkLi5iNWUyZGQ3ZjA3YTYx
YTA3Y2E4MDhiMmM3NjU0M2M5ZjBjMGQ5YjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9qcy9EZXZUb29scy5qcworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9qcy9EZXZUb29scy5qcwpAQCAtNTQsNiArNTQsNyBAQCB2YXIgY29udGV4dCA9IHt9OyAgLy8g
VXNlZCBieSBXZWJDb3JlJ3MgaW5zcGVjdG9yIHJvdXRpbmVzLgogICAgIFByZWZlcmVuY2VzLnVz
ZUxvd2VyQ2FzZU1lbnVUaXRsZXNPbldpbmRvd3MgPSB0cnVlOwogICAgIFByZWZlcmVuY2VzLmNh
bkluc3BlY3RXb3JrZXJzID0gdHJ1ZTsKICAgICBQcmVmZXJlbmNlcy5jYW5DbGVhckNhY2hlQW5k
Q29va2llcyA9IHRydWU7CisgICAgUHJlZmVyZW5jZXMuY2FuRGlzYWJsZUNhY2hlID0gdHJ1ZTsK
IH0pKCk7CiAKIC8vIFJlY29nbml6ZSBXZWJQIGFzIGEgdmFsaWQgaW1hZ2UgbWltZSB0eXBlLgo=
</data>
<flag name="review"
          id="96187"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>