<?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>84398</bug_id>
          
          <creation_ts>2012-04-19 16:15:15 -0700</creation_ts>
          <short_desc>Move LayoutTestController::setValueForUser to Internals</short_desc>
          <delta_ts>2022-03-01 02:56:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          <dependson>87993</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Andre Loureiro (IRC: loureiro)">andre.vl</assigned_to>
          <cc>andre.vl</cc>
    
    <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>morrita</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>606096</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-19 16:15:15 -0700</bug_when>
    <thetext>Move the setValueForUser method from LayoutTestController to Internals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606129</commentid>
    <comment_count>1</comment_count>
      <attachid>138002</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-19 16:29:58 -0700</bug_when>
    <thetext>Created attachment 138002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606151</commentid>
    <comment_count>2</comment_count>
      <attachid>138002</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-04-19 16:41:02 -0700</bug_when>
    <thetext>Comment on attachment 138002
Patch

Attachment 138002 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12482016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606174</commentid>
    <comment_count>3</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-19 16:49:11 -0700</bug_when>
    <thetext>Not quite sure why the gtk bot doesn&apos;t like the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606225</commentid>
    <comment_count>4</comment_count>
      <attachid>138002</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-19 17:30:02 -0700</bug_when>
    <thetext>Comment on attachment 138002
Patch

Attachment 138002 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12465066</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607783</commentid>
    <comment_count>5</comment_count>
      <attachid>138002</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-04-23 10:15:12 -0700</bug_when>
    <thetext>Comment on attachment 138002
Patch

Thanks for taking this! Code looks good. 
r- for bot redness.

GTK bot complains because of missing symbols, which now need to be exported because WebCoreTestSupport is
a separate library from libwebkitgtk. See Source/autotools/symbols.filter.

Windows bot also needs these symbols to be exported. It doesn&apos;t have the original DRT implementation
so hasn&apos;t done that...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607789</commentid>
    <comment_count>6</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-23 10:18:40 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 138002 [details])
&gt; Thanks for taking this! Code looks good. 
&gt; r- for bot redness.
&gt; 
&gt; GTK bot complains because of missing symbols, which now need to be exported because WebCoreTestSupport is
&gt; a separate library from libwebkitgtk. See Source/autotools/symbols.filter.
&gt; 
&gt; Windows bot also needs these symbols to be exported. It doesn&apos;t have the original DRT implementation
&gt; so hasn&apos;t done that...

Ah, I was guessing it was something like that. Thanks for taking the time to explain it to me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613124</commentid>
    <comment_count>7</comment_count>
      <attachid>139560</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-30 18:08:43 -0700</bug_when>
    <thetext>Created attachment 139560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613156</commentid>
    <comment_count>8</comment_count>
      <attachid>139560</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-30 18:45:40 -0700</bug_when>
    <thetext>Comment on attachment 139560
Patch

Attachment 139560 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12595358</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613158</commentid>
    <comment_count>9</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-30 18:47:20 -0700</bug_when>
    <thetext>Clearly I didn&apos;t fix the windows linking problem, lets hope I got the gtk one though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613159</commentid>
    <comment_count>10</comment_count>
      <attachid>139560</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-30 18:49:29 -0700</bug_when>
    <thetext>Comment on attachment 139560
Patch

Attachment 139560 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12593421</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613314</commentid>
    <comment_count>11</comment_count>
      <attachid>139560</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-01 02:11:20 -0700</bug_when>
    <thetext>Comment on attachment 139560
Patch

(In reply to comment #9)
&gt; Clearly I didn&apos;t fix the windows linking problem, lets hope I got the gtk one though.
Your hope didn&apos;t come. Good news is that the error message is clear.

  CXXLD  libwebkitgtk-3.0.la
/usr/bin/ld.gold.real: error: ../../Source/autotools/symbols.filter:59:1: syntax error, unexpected STRING, expecting &apos;;&apos;
/usr/bin/ld.gold.real: fatal error: unable to parse version script file ../../Source/autotools/symbols.filter
collect2: ld returned 1 exit status</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939570</commentid>
    <comment_count>12</comment_count>
    <who name="Andre Loureiro (IRC: loureiro)">andre.vl</who>
    <bug_when>2013-10-14 11:42:38 -0700</bug_when>
    <thetext>Hi, since there&apos;s no one working on this issue I&apos;d like to assign this one to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939572</commentid>
    <comment_count>13</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-10-14 11:46:31 -0700</bug_when>
    <thetext>No problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939578</commentid>
    <comment_count>14</comment_count>
      <attachid>214175</attachid>
    <who name="Andre Loureiro (IRC: loureiro)">andre.vl</who>
    <bug_when>2013-10-14 11:57:21 -0700</bug_when>
    <thetext>Created attachment 214175
Proposed Patch

Hi, attached my proposed patch, and could not mark the second one as obsolete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939602</commentid>
    <comment_count>15</comment_count>
      <attachid>214175</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-14 12:36:47 -0700</bug_when>
    <thetext>Comment on attachment 214175
Proposed Patch

Attachment 214175 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/3949842</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939604</commentid>
    <comment_count>16</comment_count>
      <attachid>214182</attachid>
    <who name="Andre Loureiro (IRC: loureiro)">andre.vl</who>
    <bug_when>2013-10-14 12:40:42 -0700</bug_when>
    <thetext>Created attachment 214182
Proposed Patch

Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939613</commentid>
    <comment_count>17</comment_count>
      <attachid>214182</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-14 13:19:59 -0700</bug_when>
    <thetext>Comment on attachment 214182
Proposed Patch

Attachment 214182 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/3952872</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939686</commentid>
    <comment_count>18</comment_count>
      <attachid>214182</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-14 16:00:17 -0700</bug_when>
    <thetext>Comment on attachment 214182
Proposed Patch

Looks like Windows needs an update to an .exp file:

     1&gt;WebCoreTestSupport.lib(Internals.obj) : error LNK2019: unresolved external symbol &quot;public: void __thiscall WebCore::HTMLInputElement::setValueForUser(class WTF::String const &amp;)&quot; (?setValueForUser@HTMLInputElement@WebCore@@QAEXABVString@WTF@@@Z) referenced in function &quot;public: void __thiscall WebCore::Internals::setValueForUser(class WebCore::Element *,class WTF::String const &amp;,int &amp;)&quot; (?setValueForUser@Internals@WebCore@@QAEXPAVElement@2@ABVString@WTF@@AAH@Z)

r=me as long as you fix that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939968</commentid>
    <comment_count>19</comment_count>
      <attachid>214261</attachid>
    <who name="Andre Loureiro (IRC: loureiro)">andre.vl</who>
    <bug_when>2013-10-15 08:31:01 -0700</bug_when>
    <thetext>Created attachment 214261
WIP Patch for EWS test

Just for testing WIN build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939981</commentid>
    <comment_count>20</comment_count>
      <attachid>214261</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-15 09:01:36 -0700</bug_when>
    <thetext>Comment on attachment 214261
WIP Patch for EWS test

Attachment 214261 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/4099052</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939983</commentid>
    <comment_count>21</comment_count>
      <attachid>214261</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-15 09:06:43 -0700</bug_when>
    <thetext>Comment on attachment 214261
WIP Patch for EWS test

Attachment 214261 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/4065108</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939987</commentid>
    <comment_count>22</comment_count>
      <attachid>214261</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-15 09:21:24 -0700</bug_when>
    <thetext>Comment on attachment 214261
WIP Patch for EWS test

Attachment 214261 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/4097043</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940369</commentid>
    <comment_count>23</comment_count>
      <attachid>214360</attachid>
    <who name="Andre Loureiro (IRC: loureiro)">andre.vl</who>
    <bug_when>2013-10-16 06:59:22 -0700</bug_when>
    <thetext>Created attachment 214360
WIP Patch for EWS testing

Patch for EWS analysis</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940500</commentid>
    <comment_count>24</comment_count>
      <attachid>214386</attachid>
    <who name="Andre Loureiro (IRC: loureiro)">andre.vl</who>
    <bug_when>2013-10-16 12:49:15 -0700</bug_when>
    <thetext>Created attachment 214386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940871</commentid>
    <comment_count>25</comment_count>
    <who name="Andre Loureiro (IRC: loureiro)">andre.vl</who>
    <bug_when>2013-10-17 11:40:14 -0700</bug_when>
    <thetext>Darin, any update?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138002</attachid>
            <date>2012-04-19 16:29:58 -0700</date>
            <delta_ts>2012-04-30 18:08:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84398-20120419162957.patch</filename>
            <type>text/plain</type>
            <size>26871</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA0LTE5ICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRWYWx1ZUZvclVzZXIgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDM5OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIHNldFZhbHVlRm9yVXNlciBmcm9t
IExheW91dFRlc3RDb250cm9sbGVyIHRvIEludGVybmFscyBhbmQKKyAgICAgICAgcmVtb3ZlIHRo
ZSBvbGQgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGFzIGl0IGV4Y2x1c2l2ZWx5
IHRlc3RzCisgICAgICAgIFdlYkNvcmUgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBDb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRWYWx1ZUZvclVzZXIpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVy
bmFscyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDEyLTA0LTE5ICBE
YW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgZW1wdHkg
ZGlyZWN0b3J5IFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAxMTQ1NTApCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNSw2ICs2MzUsMjIgQEAgdm9p
ZCBJbnRlcm5hbHM6OnNldFN1Z2dlc3RlZFZhbHVlKEVsZW1lbgogICAgIGlucHV0RWxlbWVudC0+
c2V0U3VnZ2VzdGVkVmFsdWUodmFsdWUpOwogfQogCit2b2lkIEludGVybmFsczo6c2V0VmFsdWVG
b3JVc2VyKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGlmICghZWxlbWVudCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEhUTUxJbnB1dEVsZW1lbnQq
IGlucHV0RWxlbWVudCA9IGVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCk7CisgICAgaWYgKCFpbnB1
dEVsZW1lbnQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX05PREVfVFlQRV9FUlI7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpbnB1dEVsZW1lbnQtPnNldFZhbHVlRm9yVXNlcih2YWx1
ZSk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpzY3JvbGxFbGVtZW50VG9SZWN0KEVsZW1lbnQqIGVs
ZW1lbnQsIGxvbmcgeCwgbG9uZyB5LCBsb25nIHcsIGxvbmcgaCwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5kb2N1bWVudCgpIHx8ICFlbGVtZW50
LT5kb2N1bWVudCgpLT52aWV3KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAkocmV2aXNpb24gMTE0NTUwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw3IEBAIHB1YmxpYzoKICAgICBib29sIHdh
c0xhc3RDaGFuZ2VVc2VyRWRpdChFbGVtZW50KiB0ZXh0RmllbGQsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICBTdHJpbmcgc3VnZ2VzdGVkVmFsdWUoRWxlbWVudCogaW5wdXRFbGVtZW50LCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCBzZXRTdWdnZXN0ZWRWYWx1ZShFbGVtZW50KiBpbnB1dEVsZW1l
bnQsIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldFZhbHVlRm9y
VXNlcihFbGVtZW50KiBpbnB1dEVsZW1lbnQsIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2b2lkIHNjcm9sbEVsZW1lbnRUb1JlY3QoRWxlbWVudCosIGxvbmcgeCwgbG9uZyB5
LCBsb25nIHcsIGxvbmcgaCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBwYWludENvbnRy
b2xUaW50cyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9uIDExNDU1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsNyBAQCBtb2R1
bGUgd2luZG93IHsKICAgICAgICAgYm9vbGVhbiB3YXNMYXN0Q2hhbmdlVXNlckVkaXQoaW4gRWxl
bWVudCB0ZXh0RmllbGQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgRE9NU3RyaW5n
IHN1Z2dlc3RlZFZhbHVlKGluIEVsZW1lbnQgaW5wdXRFbGVtZW50KSByYWlzZXMgKERPTUV4Y2Vw
dGlvbik7CiAgICAgICAgIHZvaWQgc2V0U3VnZ2VzdGVkVmFsdWUoaW4gRWxlbWVudCBpbnB1dEVs
ZW1lbnQsIGluIERPTVN0cmluZyB2YWx1ZSkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAg
ICB2b2lkIHNldFZhbHVlRm9yVXNlcihpbiBFbGVtZW50IGlucHV0RWxlbWVudCwgaW4gRE9NU3Ry
aW5nIHZhbHVlKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgdm9pZCBwYWludENv
bnRyb2xUaW50cyhpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTQ2ODgpCisrKyBTb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNC0x
OSAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW92ZSBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0VmFsdWVGb3JVc2VyIHRvIEludGVybmFscworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzOTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRoZSBzZXRWYWx1ZUZv
clVzZXIgZnJvbSBMYXlvdXRUZXN0Q29udHJvbGxlciB0byBJbnRlcm5hbHMgYW5kCisgICAgICAg
IHJlbW92ZSB0aGUgb2xkIHBsYXRmb3JtIHNwZWNpZmljIGltcGxlbWVudGF0aW9ucyBhcyBpdCBl
eGNsdXNpdmVseSB0ZXN0cworICAgICAgICBXZWJDb3JlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgorCiAyMDEyLTA0
LTE5ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAg
ICAgICAgW0VGTF0gZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCBuZWVkcyBpbXBsZW1l
bnRhdGlvbgpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCShyZXZpc2lvbiAxMTQ1NTAp
CisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsMjIgKzMzMSw2IEBAIHZvaWQgRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsOjpzdXNwZW5kQW4KICAgICAgICAgYW5pbWF0aW9uQ29udHJvbGxl
ci0+c3VzcGVuZEFuaW1hdGlvbnMoKTsKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRF
Zmw6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2Rl
T2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9
IHRvSlMoY29udGV4dCk7Ci0gICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCA9IFdlYkNvcmU6
OnRvRWxlbWVudCh0b0pTKGV4ZWMsIG5vZGVPYmplY3QpKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0g
ICAgICAgIHJldHVybjsKLSAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1l
bnQgPSBlbGVtZW50LT50b0lucHV0RWxlbWVudCgpOwotICAgIGlmICghaW5wdXRFbGVtZW50KQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4
aW11bVVURjhDU3RyaW5nU2l6ZSh2YWx1ZSk7Ci0gICAgT3duQXJyYXlQdHI8Y2hhcj4gdmFsdWVC
dWZmZXIgPSBhZG9wdEFycmF5UHRyKG5ldyBjaGFyW2J1ZmZlclNpemVdKTsKLSAgICBKU1N0cmlu
Z0dldFVURjhDU3RyaW5nKHZhbHVlLCB2YWx1ZUJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7Ci0g
ICAgaW5wdXRFbGVtZW50LT5zZXRWYWx1ZUZvclVzZXIoU3RyaW5nOjpmcm9tVVRGOCh2YWx1ZUJ1
ZmZlci5nZXQoKSkpOwotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0QXV0
b2ZpbGxlZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29s
IGF1dG9maWxsZWQpCiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQp
OwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgJKHJldmlzaW9uIDExNDU1MCkKKysrIFNvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViQ29y
ZTo6SW50UmVjdCBzZWxlY3Rpb25SZWN0YW5nbGUoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1l
KTsKICAgICBzdGF0aWMgU3RyaW5nIHN1aXRhYmxlRFJURnJhbWVOYW1lKGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tGcmFtZSk7CiAgICAgc3RhdGljIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoRXZhc19P
YmplY3QqIGV3a0ZyYW1lKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZUZvclVzZXIoSlNDb250
ZXh0UmVmLCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKTsKICAgICBz
dGF0aWMgdm9pZCBzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBub2RlT2Jq
ZWN0LCBib29sIGF1dG9maWxsZWQpOwogICAgIHN0YXRpYyB2b2lkIHNldERlZmVyc0xvYWRpbmco
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgZGVmZXJzKTsKIApJbmRleDogU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTE0Njg4KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDQtMTkgIEVtaWwgQSBFa2x1bmQgIDxl
YWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dFZhbHVlRm9yVXNlciB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg0Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgc2V0VmFsdWVGb3JVc2VyIGZyb20gTGF5b3V0VGVz
dENvbnRyb2xsZXIgdG8gSW50ZXJuYWxzIGFuZAorICAgICAgICByZW1vdmUgdGhlIG9sZCBwbGF0
Zm9ybSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgYXMgaXQgZXhjbHVzaXZlbHkgdGVzdHMKKyAg
ICAgICAgV2ViQ29yZSBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0ayk6CisKIDIwMTItMDQtMTggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTQ1MDYuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAJKHJldmlzaW9uIDExNDU1MCkKKysrIFNvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc0OSwyMiArNzQ5LDYgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OnNldEF1dG9maQogICAgIGlucHV0RWxlbWVudC0+c2V0QXV0b2ZpbGxlZChhdXRvZmls
bGVkKTsKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldFZhbHVlRm9yVXNl
cihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1Jl
ZiB2YWx1ZSkKLXsKLSAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7Ci0g
ICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudCh0b0pTKGV4ZWMsIG5vZGVPYmplY3QpKTsK
LSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dEVsZW1lbnQgPSBlbGVtZW50LT50b0lucHV0RWxlbWVudCgpOwotICAgIGlmICghaW5w
dXRFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IEpT
U3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZSh2YWx1ZSk7Ci0gICAgR093blB0cjxnY2hh
cj4gdmFsdWVCdWZmZXIoc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyhidWZmZXJTaXplKSkp
OwotICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcodmFsdWUsIHZhbHVlQnVmZmVyLmdldCgpLCBi
dWZmZXJTaXplKTsKLSAgICBpbnB1dEVsZW1lbnQtPnNldFZhbHVlRm9yVXNlcihTdHJpbmc6OmZy
b21VVEY4KHZhbHVlQnVmZmVyLmdldCgpKSk7Ci19Ci0KIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrOjpyZWN0YW5nbGVGb3JTZWxlY3Rpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjYWly
b19yZWN0YW5nbGVfaW50X3QqIHJlY3RhbmdsZSkKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0g
Y29yZShmcmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAkocmV2aXNpb24gMTE0NTUw
KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDYgQEAgcHVibGljOgogICAgIHN0
YXRpYyBBdGtPYmplY3QqIGdldFJvb3RBY2Nlc3NpYmxlRWxlbWVudChXZWJLaXRXZWJGcmFtZSop
OwogICAgIHN0YXRpYyB2b2lkIGxheW91dEZyYW1lKFdlYktpdFdlYkZyYW1lKik7CiAgICAgc3Rh
dGljIHZvaWQgc2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIGJvb2wpOwot
ICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYs
IEpTU3RyaW5nUmVmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRDbG9zZShXZWJLaXRXZWJGcmFt
ZSopOwogICAgIHN0YXRpYyBib29sIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdp
dGhJZChXZWJLaXRXZWJGcmFtZSosIEpTU3RyaW5nUmVmKTsKICAgICBzdGF0aWMgSlNWYWx1ZVJl
ZiBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0UmVmLCBKU1ZhbHVl
UmVmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTQ2ODgpCisrKyBTb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA0
LTE5ICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRWYWx1ZUZvclVzZXIgdG8gSW50ZXJuYWxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDM5OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIHNldFZhbHVl
Rm9yVXNlciBmcm9tIExheW91dFRlc3RDb250cm9sbGVyIHRvIEludGVybmFscyBhbmQKKyAgICAg
ICAgcmVtb3ZlIHRoZSBvbGQgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGFzIGl0
IGV4Y2x1c2l2ZWx5IHRlc3RzCisgICAgICAgIFdlYkNvcmUgZnVuY3Rpb25hbGl0eS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCiAyMDEyLTA0
LTE4ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgogCiAg
ICAgICAgIENsZWFuLXVwIFdoZWVsRXZlbnQgQ29udmVyc2lvbi4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQuY3BwCShyZXZpc2lvbiAxMTQ1NTApCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE0
LDE4ICszMTQsNiBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRKYXZhU2NyCiAj
ZW5kaWYKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0VmFsdWVGb3JVc2Vy
KGNvbnN0IFFXZWJFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRU3RyaW5nJiB2YWx1ZSkKLXsKLSAg
ICBXZWJDb3JlOjpFbGVtZW50KiB3ZWJFbGVtZW50ID0gZWxlbWVudC5tX2VsZW1lbnQ7Ci0gICAg
aWYgKCF3ZWJFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0gICAgSFRNTElucHV0RWxlbWVudCog
aW5wdXRFbGVtZW50ID0gd2ViRWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICBpZiAoIWlu
cHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW5wdXRFbGVtZW50LT5zZXRWYWx1
ZUZvclVzZXIodmFsdWUpOwotfQotCiAvLyBQYXVzZSBhIGdpdmVuIENTUyBhbmltYXRpb24gb3Ig
dHJhbnNpdGlvbiBvbiB0aGUgdGFyZ2V0IG5vZGUgYXQgYSBzcGVjaWZpYyB0aW1lLgogLy8gSWYg
dGhlIGFuaW1hdGlvbiBvciB0cmFuc2l0aW9uIGlzIGFscmVhZHkgcGF1c2VkLCBpdCB3aWxsIHVw
ZGF0ZSBpdHMgcGF1c2UgdGltZS4KIC8vIFRoaXMgbWV0aG9kIGlzIG9ubHkgaW50ZW5kZWQgdG8g
YmUgdXNlZCBmb3IgdGVzdGluZyB0aGUgQ1NTIGFuaW1hdGlvbiBhbmQgdHJhbnNpdGlvbiBzeXN0
ZW0uCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCShyZXZpc2lvbiAxMTQ1NTApCisrKyBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZ2Fy
YmFnZUNvbGxlY3RvckNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUp
OwogICAgIHN0YXRpYyB2b2lkIHNldEF1dG9maWxsZWQoY29uc3QgUVdlYkVsZW1lbnQmLCBib29s
IGVuYWJsZWQpOwogICAgIHN0YXRpYyB2b2lkIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVk
KFFXZWJGcmFtZSosIGJvb2wgZW5hYmxlZCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0VmFsdWVGb3JV
c2VyKGNvbnN0IFFXZWJFbGVtZW50JiwgY29uc3QgUVN0cmluZyYgdmFsdWUpOwogICAgIHN0YXRp
YyBpbnQgamF2YVNjcmlwdE9iamVjdHNDb3VudCgpOwogICAgIHN0YXRpYyB2b2lkIGNsZWFyU2Ny
aXB0V29ybGRzKCk7CiAgICAgc3RhdGljIHZvaWQgZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29y
bGQoUVdlYkZyYW1lKiBmcmFtZSwgaW50IHdvcmxkSUQsIGNvbnN0IFFTdHJpbmcmIHNjcmlwdCk7
CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMTQ2ODgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwzMiBAQAorMjAxMi0wNC0xOSAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgTW92ZSBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VmFsdWVGb3JVc2VyIHRv
IEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODQzOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNb3ZlIHRoZSBzZXRWYWx1ZUZvclVzZXIgZnJvbSBMYXlvdXRUZXN0Q29udHJvbGxlciB0byBJ
bnRlcm5hbHMgYW5kCisgICAgICAgIHJlbW92ZSB0aGUgb2xkIHBsYXRmb3JtIHNwZWNpZmljIGlt
cGxlbWVudGF0aW9ucyBhcyBpdCBleGNsdXNpdmVseSB0ZXN0cworICAgICAgICBXZWJDb3JlIGZ1
bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25z
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Js
YWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0xh
eW91dFRlc3RDb250cm9sbGVyRWZsLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsv
TGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2lu
LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4
LmNwcDoKKwogMjAxMi0wNC0xOSAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2Fu
dG9zQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBbRFJUXSBTaG91bGQgY3JlYXRlIG9mZmxp
bmUgc3RvcmFnZSBpbnNpZGUgRFVNUFJFTkRFUlRSRUVfVEVNUApJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTE0NTUwKQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTk0LDIxICsxNTk0LDYgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0VXNlclN0
eWxlU2hlZXRMb2NhdAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
IH0KIAotc3RhdGljIEpTVmFsdWVSZWYgc2V0VmFsdWVGb3JVc2VyQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQotewotICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRpb24KLSAg
ICBpZiAoYXJndW1lbnRDb3VudCAhPSAyKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7Ci0KLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdmFsdWUoQWRv
cHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24p
KTsKLSAgICBBU1NFUlQoISpleGNlcHRpb24pOwotCi0gICAgTGF5b3V0VGVzdENvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0
R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgY29udHJvbGxlci0+c2V0VmFsdWVGb3JVc2Vy
KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgdmFsdWUuZ2V0KCkpOwotCi0gICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotfQotCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRWaWV3
TW9kZU1lZGlhRmVhdHVyZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsK
ICAgICAvLyBIYXMgbWFjIGltcGxlbWVudGF0aW9uCkBAIC0yNDI2LDcgKzI0MTEsNiBAQCBKU1N0
YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6CiAgICAgICAgIHsgInNldFVzZURh
c2hib2FyZENvbXBhdGliaWxpdHlNb2RlIiwgc2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1v
ZGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQi
LCBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJz
ZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uIiwgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCi0gICAgICAgIHsgInNldFZhbHVlRm9yVXNlciIsIHNldFZhbHVlRm9yVXNl
ckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFZpZXdNb2RlTWVkaWFGZWF0dXJlIiwg
c2V0Vmlld01vZGVNZWRpYUZlYXR1cmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRX
ZWJWaWV3RWRpdGFibGUiLCBzZXRXZWJWaWV3RWRpdGFibGVDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlciIsIHNldFdpbGxTZW5kUmVxdWVz
dENsZWFySGVhZGVyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTE0NTUwKQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4
LDcgKzExOCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZURhc2hib2FyZENvbXBhdGliaWxp
dHlNb2RlKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoYm9v
bCBmbGFnKTsKICAgICB2b2lkIHNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYg
cGF0aCk7Ci0gICAgdm9pZCBzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVm
IG5vZGVPYmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKTsKICAgICB2b2lkIHNldFZpZXdNb2RlTWVk
aWFGZWF0dXJlKEpTU3RyaW5nUmVmIG1vZGUpOwogICAgIHZvaWQgc2V0WFNTQXVkaXRvckVuYWJs
ZWQoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoYm9vbCBl
bmFibGUpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRUZXN0
Q29udHJvbGxlckJsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0JlcnJ5LmNwcAkocmV2aXNp
b24gMTE0NTUwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRUZXN0
Q29udHJvbGxlckJsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NDYsMTkgKzg0Niw2
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmRlbGV0ZUxvY2FsU3QKICAgICAvLyBGSVhN
RTogSW1wbGVtZW50LgogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRWYWx1ZUZv
clVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgSlNTdHJp
bmdSZWYgdmFsdWUpCi17Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQp
OwotICAgIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQodG9KUyhleGVjLCBu
b2RlT2JqZWN0KSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0gICAgV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZWxlbWVudC0+dG9JbnB1dEVs
ZW1lbnQoKTsKLSAgICBpZiAoIWlucHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aW5wdXRFbGVtZW50LT5zZXRWYWx1ZUZvclVzZXIoanNTdHJpbmdSZWZUb1dlYkNvcmVTdHJpbmco
dmFsdWUpKTsKLX0KLQogbG9uZyBsb25nIExheW91dFRlc3RDb250cm9sbGVyOjphcHBsaWNhdGlv
bkNhY2hlRGlza1VzYWdlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIG9yaWdpbikKIHsKICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRvIHN1cHBvcnQgZ2V0dGluZyBkaXNrIHVzYWdlIGJ5IGFsbCBhcHBs
aWNhdGlvbiBjYWNoZXMgZm9yIGFuIG9yaWdpbi4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDExNDU1MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDcgKzIwMiw2IEBAIExheW91dFRlc3RD
b250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAgICBiaW5kTWV0aG9kKCJzZXRUYWJLZXlD
eWNsZXNUaHJvdWdoRWxlbWVudHMiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRhYktleUN5
Y2xlc1Rocm91Z2hFbGVtZW50cyk7CiAgICAgYmluZE1ldGhvZCgic2V0VXNlclN0eWxlU2hlZXRF
bmFibGVkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQp
OwogICAgIGJpbmRNZXRob2QoInNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24iLCAmTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24pOwotICAgIGJpbmRNZXRob2Qo
InNldFZhbHVlRm9yVXNlciIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VmFsdWVGb3JVc2Vy
KTsKICAgICBiaW5kTWV0aG9kKCJzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlciIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIpOwogICAgIGJp
bmRNZXRob2QoInNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsIiwgJkxheW91dFRlc3RDb250
cm9sbGVyOjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCk7CiAgICAgYmluZE1ldGhvZCgi
c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0IiwgJkxheW91dFRlc3RDb250
cm9sbGVyOjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QpOwpAQCAtMjA1
NywyMyArMjA1Niw2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dG9maWxsZWQK
ICAgICBpbnB1dC0+c2V0QXV0b2ZpbGxlZChhcmd1bWVudHNbMV0udmFsdWUuYm9vbFZhbHVlKTsK
IH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VmFsdWVGb3JVc2VyKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgcmVz
dWx0LT5zZXROdWxsKCk7Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgIT0gMikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgV2ViRWxlbWVudCBlbGVtZW50OwotICAgIGlmICghV2ViQmluZGluZ3M6
OmdldEVsZW1lbnQoYXJndW1lbnRzWzBdLnZhbHVlLm9iamVjdFZhbHVlLCAmZWxlbWVudCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFdlYklucHV0RWxlbWVudCogaW5wdXQgPSB0b1dlYklucHV0
RWxlbWVudCgmZWxlbWVudCk7Ci0gICAgaWYgKCFpbnB1dCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgaW5wdXQtPnNldFZhbHVlKGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMV0pLCB0
cnVlKTsKLX0KLQogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGVsZXRlQWxsTG9jYWxTdG9y
YWdlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KikKIHsKICAg
ICAvLyBOb3QgSW1wbGVtZW50ZWQKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTE0NTUwKQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzkzLDEwICszOTMsNiBAQCBwdWJsaWM6CiAgICAgLy8gRm9yd2FyZHMg
dGhlIHNldEF1dG9maWxsZWQoKSBjYWxsIHRvIHRoZSBlbGVtZW50LgogICAgIHZvaWQgc2V0QXV0
b2ZpbGxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSAgICAvLyBF
eHBlY3RzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBiZSBhbiBpbnB1dCBlbGVtZW50IGFuZCB0aGUg
c2Vjb25kIGFyZ3VtZW50IHRvIGJlIGEgc3RyaW5nIHZhbHVlLgotICAgIC8vIEZvcndhcmRzIHRo
ZSBzZXRWYWx1ZUZvclVzZXIoKSBjYWxsIHRvIHRoZSBlbGVtZW50LgotICAgIHZvaWQgc2V0VmFs
dWVGb3JVc2VyKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLQogICAgIC8v
IExvY2FsU3RvcmFnZSBvcmlnaW4tcmVsYXRlZAogICAgIHZvaWQgZGVsZXRlQWxsTG9jYWxTdG9y
YWdlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIG9yaWdp
bnNXaXRoTG9jYWxTdG9yYWdlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250
cm9sbGVyRWZsLmNwcAkocmV2aXNpb24gMTE0NTUwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDEx
ICsyNjUsNiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRVc2VyU3R5bGVTCiAgICAg
ICAgIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZCh0cnVlKTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVl
UmVmIG5vZGVPYmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKQotewotICAgIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbDo6c2V0VmFsdWVGb3JVc2VyKGNvbnRleHQsIG5vZGVPYmplY3QsIHZhbHVlKTsK
LX0KLQogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUo
SlNTdHJpbmdSZWYgbW9kZSkKIHsKICAgICBFdmFzX09iamVjdCogdmlldyA9IGJyb3dzZXItPm1h
aW5WaWV3KCk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlv
dXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHJldmlzaW9uIDExNDU1MCkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyOSwxMSArMzI5LDYgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VXNlclN0
eWxlUwogICAgICAgICBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQodHJ1ZSk7CiB9CiAKLXZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldFZhbHVlRm9yVXNlcihjb250ZXh0LCBub2RlT2JqZWN0
LCB2YWx1ZSk7Ci19Ci0KIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFZpZXdNb2RlTWVk
aWFGZWF0dXJlKEpTU3RyaW5nUmVmIG1vZGUpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogdmlldyA9
IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7CkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShy
ZXZpc2lvbiAxMTQ1NTApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENv
bnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTY0NywxNiArNjQ3LDYgQEAgdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VXNlclN0eWxlUwogICAgIFtbV2ViUHJlZmVyZW5jZXMg
c3RhbmRhcmRQcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjp1cmxdOwogfQog
Ci12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgSlNTdHJpbmdSZWYgdmFsdWUpCi17Ci0g
ICAgRE9NRWxlbWVudCAqZWxlbWVudCA9IFtET01FbGVtZW50IF9ET01FbGVtZW50RnJvbUpTQ29u
dGV4dDpjb250ZXh0IHZhbHVlOm5vZGVPYmplY3RdOwotICAgIGlmICghZWxlbWVudCB8fCAhW2Vs
ZW1lbnQgaXNLaW5kT2ZDbGFzczpbRE9NSFRNTElucHV0RWxlbWVudCBjbGFzc11dKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHZhbHVlQ0YoQWRvcHRDRiwg
SlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdmFsdWUpKTsKLSAgICBb
KERPTUhUTUxJbnB1dEVsZW1lbnQgKillbGVtZW50IF9zZXRWYWx1ZUZvclVzZXI6KE5TU3RyaW5n
ICopdmFsdWVDRi5nZXQoKV07Ci19Ci0KIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFZp
ZXdNb2RlTWVkaWFGZWF0dXJlKEpTU3RyaW5nUmVmIG1vZGUpCiB7CiAgICAgLy8gRklYTUU6IGlt
cGxlbWVudApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xs
ZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5jcHAJKHJldmlzaW9uIDExNDU1MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODMs
MTEgKzQ4Myw2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEphdmFTY3JpcHQKICAg
ICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQo
bV90b3BMb2FkaW5nRnJhbWUsIGVuYWJsZSk7CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldFZhbHVlRm9yVXNlcihjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUVN0
cmluZyYgdmFsdWUpCi17Ci0gICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFZhbHVlRm9y
VXNlcihlbGVtZW50LCB2YWx1ZSk7Ci19Ci0KIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dEZpeGVkQ29udGVudHNTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICBtX3RvcExv
YWRpbmdGcmFtZS0+cGFnZSgpLT5zZXRQcmVmZXJyZWRDb250ZW50c1NpemUoUVNpemUod2lkdGgs
IGhlaWdodCkpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRl
c3RDb250cm9sbGVyUXQuaAkocmV2aXNpb24gMTE0NTUwKQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyAr
MTYwLDYgQEAgcHVibGljIHNsb3RzOgogICAgIHZvaWQgc2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSh1
bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogICAgIHZvaWQgc2V0QXV0b2ZpbGxlZChjb25zdCBR
V2ViRWxlbWVudCYsIGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldEphdmFTY3JpcHRQcm9maWxp
bmdFbmFibGVkKGJvb2wgZW5hYmxlKTsKLSAgICB2b2lkIHNldFZhbHVlRm9yVXNlcihjb25zdCBR
V2ViRWxlbWVudCYsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKTsKICAgICB2b2lkIHNldEZpeGVkQ29u
dGVudHNTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAgICAgdm9pZCBzZXRQcml2YXRlQnJv
d3NpbmdFbmFibGVkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldFNwYXRpYWxOYXZpZ2F0aW9u
RW5hYmxlZChib29sIGVuYWJsZWQpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xh
eW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCShyZXZpc2lvbiAxMTQ1NTApCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NzcsMjkgKzc3Nyw2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldFVzZXJTdHlsZVMKICAgICBTeXNGcmVlU3RyaW5nKHJlc3VsdFBhdGhCU1RSKTsKIH0K
IAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGVsZW1lbnQsIEpTU3RyaW5nUmVmIHZhbHVlKQotewotICAg
IENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKLSAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3
KCZ3ZWJWaWV3KSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENPTVB0cjxJV2ViVmlld1ByaXZh
dGU+IHdlYlZpZXdQcml2YXRlKFF1ZXJ5LCB3ZWJWaWV3KTsKLSAgICBpZiAoIXdlYlZpZXdQcml2
YXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDT01QdHI8SURPTUVsZW1lbnQ+IGRvbUVsZW1l
bnQ7Ci0gICAgaWYgKEZBSUxFRCh3ZWJWaWV3UHJpdmF0ZS0+ZWxlbWVudEZyb21KUyhjb250ZXh0
LCBlbGVtZW50LCAmZG9tRWxlbWVudCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDT01QdHI8
SURPTUhUTUxJbnB1dEVsZW1lbnQ+IGRvbUlucHV0RWxlbWVudDsKLSAgICBpZiAoRkFJTEVEKGRv
bUVsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NSFRNTElucHV0RWxlbWVudCwgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKio+KCZkb21JbnB1dEVsZW1lbnQpKSkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIF9ic3RyX3QgdmFsdWVCU1RSKEpTU3RyaW5nQ29weUJTVFIodmFsdWUpLCBmYWxzZSk7
Ci0KLSAgICBkb21JbnB1dEVsZW1lbnQtPnNldFZhbHVlRm9yVXNlcih2YWx1ZUJTVFIpOwotfQot
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRWaWV3TW9kZU1lZGlhRmVhdHVyZShKU1N0
cmluZ1JlZiBtb2RlKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCShyZXZp
c2lvbiAxMTQ1NTApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJv
bGxlcld4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDExICsxMzUsNiBAQCB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRVc2VyU3R5bGVTCiB7CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJl
ZiBlbGVtZW50LCBKU1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50
Ci19Ci0KIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFZpZXdNb2RlTWVkaWFGZWF0dXJl
KEpTU3RyaW5nUmVmIG1vZGUpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTE0Njg4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDQtMTkgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIE1vdmUgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFZhbHVlRm9y
VXNlciB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg0Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTW92ZSB0aGUgc2V0VmFsdWVGb3JVc2VyIGZyb20gTGF5b3V0VGVzdENvbnRyb2xs
ZXIgdG8gSW50ZXJuYWxzIGFuZAorICAgICAgICByZW1vdmUgdGhlIG9sZCBwbGF0Zm9ybSBzcGVj
aWZpYyBpbXBsZW1lbnRhdGlvbnMgYXMgaXQgZXhjbHVzaXZlbHkgdGVzdHMKKyAgICAgICAgV2Vi
Q29yZSBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogZmFzdC9mb3Jtcy9vbmNoYW5nZS1zZXR2
YWx1ZWZvcnVzZXIuaHRtbDoKKwogMjAxMi0wNC0xOCAgTWFoZXNoIEt1bGthcm5pICA8bWFoZXNo
Lmt1bGthcm5pQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdW1drMl0gdW5za2lwIHBhZ2UtcmVs
b2FkLWNhbmNlbC1wZXJtaXNzaW9uLXJlcXVlc3RzIGZyb20gZ2VvbG9jYXRpb24gZm9yIHdrMgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbmNoYW5nZS1zZXR2YWx1ZWZvcnVzZXIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29uY2hhbmdlLXNldHZhbHVl
Zm9ydXNlci5odG1sCShyZXZpc2lvbiAxMTQ1NTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L29uY2hhbmdlLXNldHZhbHVlZm9ydXNlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw4ICsx
NSw4IEBACiAgICAgICAgIH0KIAogICAgICAgICB0Zi5mb2N1cygpOwotICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRWYWx1ZUZvclVzZXIodGYsICdIZWxsbyEnKTsKKyAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpIHsKKyAgICAgICAgICAgIGludGVybmFscy5zZXRWYWx1ZUZvclVzZXIodGYsICdI
ZWxsbyEnKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNob3VsZCBub3QgZmlyZSB0aGUgZXZl
bnQgdW50aWwgZm9jdXMgaXMgbG9zdC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139560</attachid>
            <date>2012-04-30 18:08:43 -0700</date>
            <delta_ts>2012-05-01 02:11:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84398-20120430180842.patch</filename>
            <type>text/plain</type>
            <size>28407</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA0LTMwICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRWYWx1ZUZvclVzZXIgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDM5OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIHNldFZhbHVlRm9yVXNlciBmcm9t
IExheW91dFRlc3RDb250cm9sbGVyIHRvIEludGVybmFscyBhbmQKKyAgICAgICAgcmVtb3ZlIHRo
ZSBvbGQgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGFzIGl0IGV4Y2x1c2l2ZWx5
IHRlc3RzCisgICAgICAgIFdlYkNvcmUgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBDb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRWYWx1ZUZvclVzZXIpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVy
bmFscyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDEyLTA0LTMwICBM
ZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBQcmVwYXJlIFJl
bmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCBmb3Igc3ViLXBpeGVsIGxheW91dApJbmRleDogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTE1Njg3KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDcsNiAr
NjQ3LDIyIEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRTdWdnZXN0ZWRWYWx1ZShFbGVtZW4KICAgICBp
bnB1dEVsZW1lbnQtPnNldFN1Z2dlc3RlZFZhbHVlKHZhbHVlKTsKIH0KIAordm9pZCBJbnRlcm5h
bHM6OnNldFZhbHVlRm9yVXNlcihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHZhbHVl
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWVsZW1lbnQpIHsKKyAgICAgICAgZWMg
PSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBIVE1M
SW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlbGVtZW50LT50b0lucHV0RWxlbWVudCgpOwor
ICAgIGlmICghaW5wdXRFbGVtZW50KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9OT0RFX1RZUEVf
RVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW5wdXRFbGVtZW50LT5zZXRWYWx1
ZUZvclVzZXIodmFsdWUpOworfQorCiB2b2lkIEludGVybmFsczo6c2Nyb2xsRWxlbWVudFRvUmVj
dChFbGVtZW50KiBlbGVtZW50LCBsb25nIHgsIGxvbmcgeSwgbG9uZyB3LCBsb25nIGgsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+ZG9jdW1lbnQo
KSB8fCAhZWxlbWVudC0+ZG9jdW1lbnQoKS0+dmlldygpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDExNTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCB3YXNMYXN0Q2hhbmdlVXNlckVkaXQoRWxlbWVudCogdGV4dEZpZWxkLCBFeGNl
cHRpb25Db2RlJik7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZFZhbHVlKEVsZW1lbnQqIGlucHV0RWxl
bWVudCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0U3VnZ2VzdGVkVmFsdWUoRWxlbWVu
dCogaW5wdXRFbGVtZW50LCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9p
ZCBzZXRWYWx1ZUZvclVzZXIoRWxlbWVudCogaW5wdXRFbGVtZW50LCBjb25zdCBTdHJpbmcmLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzY3JvbGxFbGVtZW50VG9SZWN0KEVsZW1lbnQqLCBs
b25nIHgsIGxvbmcgeSwgbG9uZyB3LCBsb25nIGgsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZv
aWQgcGFpbnRDb250cm9sVGludHMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAxMTU2ODcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYg
Kzg2LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGJvb2xlYW4gd2FzTGFzdENoYW5nZVVz
ZXJFZGl0KGluIEVsZW1lbnQgdGV4dEZpZWxkKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAg
ICAgIERPTVN0cmluZyBzdWdnZXN0ZWRWYWx1ZShpbiBFbGVtZW50IGlucHV0RWxlbWVudCkgcmFp
c2VzIChET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFN1Z2dlc3RlZFZhbHVlKGluIEVs
ZW1lbnQgaW5wdXRFbGVtZW50LCBpbiBET01TdHJpbmcgdmFsdWUpIHJhaXNlcyAoRE9NRXhjZXB0
aW9uKTsKKyAgICAgICAgdm9pZCBzZXRWYWx1ZUZvclVzZXIoaW4gRWxlbWVudCBpbnB1dEVsZW1l
bnQsIGluIERPTVN0cmluZyB2YWx1ZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAgICAg
IHZvaWQgcGFpbnRDb250cm9sVGludHMoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9N
RXhjZXB0aW9uKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgkocmV2aXNpb24gMTE1Njg3
KQorKysgU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjYsNiArMjI2LDcgQEAgRVhQT1JUUwogICAgICAgICA/c2V0U2VyaWZGb250RmFtaWx5QFNldHRp
bmdzQFdlYkNvcmVAQFFBRVhBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWgog
ICAgICAgICA/c2V0U3RhbmRhcmRGb250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFBRVhBQlZB
dG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWgogICAgICAgICA/c2V0U3VnZ2VzdGVk
VmFsdWVASFRNTElucHV0RWxlbWVudEBXZWJDb3JlQEBRQUVYQUJWU3RyaW5nQFdURkBAQFoKKyAg
ICAgICAgP3NldFZhbHVlRm9yVXNlckBJbnRlcm5hbHNAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRA
MkBBQlZTdHJpbmdAV1RGQEBBQUhAWgogICAgICAgICA/c2V0dGluZ3NARG9jdW1lbnRAV2ViQ29y
ZUBAUUJFUEFWU2V0dGluZ3NAMkBYWgogICAgICAgICA/c2V0dGluZ3NARnJhbWVAV2ViQ29yZUBA
UUJFUEFWU2V0dGluZ3NAMkBYWgogICAgICAgICA/c2V0Rml4ZWRFbGVtZW50c0xheW91dFJlbGF0
aXZlVG9GcmFtZUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYX05AWgpJbmRleDogU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTE1Njg3KQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDQtMzAgIEVtaWwgQSBFa2x1bmQgIDxl
YWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dFZhbHVlRm9yVXNlciB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg0Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgc2V0VmFsdWVGb3JVc2VyIGZyb20gTGF5b3V0VGVz
dENvbnRyb2xsZXIgdG8gSW50ZXJuYWxzIGFuZAorICAgICAgICByZW1vdmUgdGhlIG9sZCBwbGF0
Zm9ybSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgYXMgaXQgZXhjbHVzaXZlbHkgdGVzdHMKKyAg
ICAgICAgV2ViQ29yZSBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKKwogMjAxMi0wNC0yNyAgQ2hyaXN0b3BoZSBEdW1l
eiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIFJlc291cmNl
RXJyb3IgZG9tYWluIG5lZWRzIHRvIGJlIHByb3Blcmx5IHNldCBpbiBGcmFtZUxvYWRlckNsaWVu
dApJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCShyZXZpc2lvbiAxMTU2ODcpCisrKyBT
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTAsMjIgKzM1MCw2IEBAIHZvaWQgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsOjpzdXNwZW5kQW4KICAgICAgICAgYW5pbWF0aW9uQ29udHJvbGxlci0+c3Vz
cGVuZEFuaW1hdGlvbnMoKTsKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNl
dFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0
LCBKU1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMo
Y29udGV4dCk7Ci0gICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCA9IFdlYkNvcmU6OnRvRWxl
bWVudCh0b0pTKGV4ZWMsIG5vZGVPYmplY3QpKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAg
IHJldHVybjsKLSAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBl
bGVtZW50LT50b0lucHV0RWxlbWVudCgpOwotICAgIGlmICghaW5wdXRFbGVtZW50KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVU
RjhDU3RyaW5nU2l6ZSh2YWx1ZSk7Ci0gICAgT3duQXJyYXlQdHI8Y2hhcj4gdmFsdWVCdWZmZXIg
PSBhZG9wdEFycmF5UHRyKG5ldyBjaGFyW2J1ZmZlclNpemVdKTsKLSAgICBKU1N0cmluZ0dldFVU
RjhDU3RyaW5nKHZhbHVlLCB2YWx1ZUJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7Ci0gICAgaW5w
dXRFbGVtZW50LT5zZXRWYWx1ZUZvclVzZXIoU3RyaW5nOjpmcm9tVVRGOCh2YWx1ZUJ1ZmZlci5n
ZXQoKSkpOwotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0QXV0b2ZpbGxl
ZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29sIGF1dG9m
aWxsZWQpCiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOwpJbmRl
eDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmgJKHJldmlzaW9uIDExNTY4NykKKysrIFNvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02Nyw3ICs2Nyw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViQ29yZTo6SW50
UmVjdCBzZWxlY3Rpb25SZWN0YW5nbGUoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKICAg
ICBzdGF0aWMgU3RyaW5nIHN1aXRhYmxlRFJURnJhbWVOYW1lKGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSk7CiAgICAgc3RhdGljIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVm
LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKTsKICAgICBzdGF0aWMg
dm9pZCBzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBi
b29sIGF1dG9maWxsZWQpOwogICAgIHN0YXRpYyB2b2lkIHNldERlZmVyc0xvYWRpbmcoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGJvb2wgZGVmZXJzKTsKIApJbmRleDogU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2
aXNpb24gMTE1Njg3KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDQtMzAgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFZhbHVl
Rm9yVXNlciB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg0Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTW92ZSB0aGUgc2V0VmFsdWVGb3JVc2VyIGZyb20gTGF5b3V0VGVzdENvbnRy
b2xsZXIgdG8gSW50ZXJuYWxzIGFuZAorICAgICAgICByZW1vdmUgdGhlIG9sZCBwbGF0Zm9ybSBz
cGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgYXMgaXQgZXhjbHVzaXZlbHkgdGVzdHMKKyAgICAgICAg
V2ViQ29yZSBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGsuaDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ayk6
CisKIDIwMTItMDQtMzAgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtndGssIHF0LCBjaHJvbWl1bSwgd2luXSBGaXggdXNhZ2Ugb2YgTGF5b3V0VW5pdHMgYW5k
IHJvdW5kaW5nIGluIHBsYXRmb3JtIGNvZGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNw
cAkocmV2aXNpb24gMTE1Njg3KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzU1LDIyICs3
NTUsNiBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0QXV0b2ZpCiAgICAgaW5w
dXRFbGVtZW50LT5zZXRBdXRvZmlsbGVkKGF1dG9maWxsZWQpOwogfQogCi12b2lkIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0azo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U1ZhbHVlUmVmIG5vZGVPYmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKQotewotICAgIEpTQzo6RXhl
Y1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9F
bGVtZW50KHRvSlMoZXhlYywgbm9kZU9iamVjdCkpOwotICAgIGlmICghZWxlbWVudCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IGVsZW1lbnQt
PnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgaWYgKCFpbnB1dEVsZW1lbnQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHNpemVfdCBidWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJp
bmdTaXplKHZhbHVlKTsKLSAgICBHT3duUHRyPGdjaGFyPiB2YWx1ZUJ1ZmZlcihzdGF0aWNfY2Fz
dDxnY2hhcio+KGdfbWFsbG9jKGJ1ZmZlclNpemUpKSk7Ci0gICAgSlNTdHJpbmdHZXRVVEY4Q1N0
cmluZyh2YWx1ZSwgdmFsdWVCdWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwotICAgIGlucHV0RWxl
bWVudC0+c2V0VmFsdWVGb3JVc2VyKFN0cmluZzo6ZnJvbVVURjgodmFsdWVCdWZmZXIuZ2V0KCkp
KTsKLX0KLQogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnJlY3RhbmdsZUZvclNlbGVj
dGlvbihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNhaXJvX3JlY3RhbmdsZV9pbnRfdCogcmVjdGFu
Z2xlKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0ay5oCShyZXZpc2lvbiAxMTU2ODcpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAkod29ya2luZyBjb3B5KQpA
QCAtODAsNyArODAsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEF0a09iamVjdCogZ2V0Um9vdEFj
Y2Vzc2libGVFbGVtZW50KFdlYktpdFdlYkZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgbGF5b3V0
RnJhbWUoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCBzZXRBdXRvZmlsbGVkKEpT
Q29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgYm9vbCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0VmFsdWVG
b3JVc2VyKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgSlNTdHJpbmdSZWYpOwogICAgIHN0YXRp
YyBib29sIHNob3VsZENsb3NlKFdlYktpdFdlYkZyYW1lKik7CiAgICAgc3RhdGljIGJvb2wgZWxl
bWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKFdlYktpdFdlYkZyYW1lKiwgSlNT
dHJpbmdSZWYpOwogICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdW
aXNpdGVkSW5mbyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwpJbmRleDogU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDExNTY4NykKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDQtMzAgIEVtaWwgQSBFa2x1bmQgIDxlYWVA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFZh
bHVlRm9yVXNlciB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg0Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTW92ZSB0aGUgc2V0VmFsdWVGb3JVc2VyIGZyb20gTGF5b3V0VGVzdENv
bnRyb2xsZXIgdG8gSW50ZXJuYWxzIGFuZAorICAgICAgICByZW1vdmUgdGhlIG9sZCBwbGF0Zm9y
bSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgYXMgaXQgZXhjbHVzaXZlbHkgdGVzdHMKKyAgICAg
ICAgV2ViQ29yZSBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKIDIwMTItMDQtMjcgIEFsbGFuIFNhbmRmZWxkIEplbnNl
biAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CiAKICAgICAgICAgTW92ZSBXZWJLaXQxIHNwZWNp
ZmljIGNvbnZlcnNpb24gb2YgdG91Y2gtZXZlbnRzIHRvIFdlYktpdDEKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQuY3BwCShyZXZpc2lvbiAxMTU2ODcpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzE1LDE4ICszMTUsNiBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRKYXZhU2Ny
CiAjZW5kaWYKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0VmFsdWVGb3JV
c2VyKGNvbnN0IFFXZWJFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRU3RyaW5nJiB2YWx1ZSkKLXsK
LSAgICBXZWJDb3JlOjpFbGVtZW50KiB3ZWJFbGVtZW50ID0gZWxlbWVudC5tX2VsZW1lbnQ7Ci0g
ICAgaWYgKCF3ZWJFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0gICAgSFRNTElucHV0RWxlbWVu
dCogaW5wdXRFbGVtZW50ID0gd2ViRWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICBpZiAo
IWlucHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW5wdXRFbGVtZW50LT5zZXRW
YWx1ZUZvclVzZXIodmFsdWUpOwotfQotCiAvLyBQYXVzZSBhIGdpdmVuIENTUyBhbmltYXRpb24g
b3IgdHJhbnNpdGlvbiBvbiB0aGUgdGFyZ2V0IG5vZGUgYXQgYSBzcGVjaWZpYyB0aW1lLgogLy8g
SWYgdGhlIGFuaW1hdGlvbiBvciB0cmFuc2l0aW9uIGlzIGFscmVhZHkgcGF1c2VkLCBpdCB3aWxs
IHVwZGF0ZSBpdHMgcGF1c2UgdGltZS4KIC8vIFRoaXMgbWV0aG9kIGlzIG9ubHkgaW50ZW5kZWQg
dG8gYmUgdXNlZCBmb3IgdGVzdGluZyB0aGUgQ1NTIGFuaW1hdGlvbiBhbmQgdHJhbnNpdGlvbiBz
eXN0ZW0uCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCShyZXZpc2lvbiAxMTU2ODcpCisrKyBTb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
Z2FyYmFnZUNvbGxlY3RvckNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERv
bmUpOwogICAgIHN0YXRpYyB2b2lkIHNldEF1dG9maWxsZWQoY29uc3QgUVdlYkVsZW1lbnQmLCBi
b29sIGVuYWJsZWQpOwogICAgIHN0YXRpYyB2b2lkIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFi
bGVkKFFXZWJGcmFtZSosIGJvb2wgZW5hYmxlZCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0VmFsdWVG
b3JVc2VyKGNvbnN0IFFXZWJFbGVtZW50JiwgY29uc3QgUVN0cmluZyYgdmFsdWUpOwogICAgIHN0
YXRpYyBpbnQgamF2YVNjcmlwdE9iamVjdHNDb3VudCgpOwogICAgIHN0YXRpYyB2b2lkIGNsZWFy
U2NyaXB0V29ybGRzKCk7CiAgICAgc3RhdGljIHZvaWQgZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVk
V29ybGQoUVdlYkZyYW1lKiBmcmFtZSwgaW50IHdvcmxkSUQsIGNvbnN0IFFTdHJpbmcmIHNjcmlw
dCk7CkluZGV4OiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIJKHJldmlzaW9uIDExNTY4NykKKysrIFNv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1
LDcgQEAgX1pON1dlYkNvcmUxNENsaWVudFJlY3RMaXN0QzFFUktOM1dURjZWZQogX1pON1dlYkNv
cmUxNENsaWVudFJlY3RMaXN0QzFFdjsKIF9aTjdXZWJDb3JlMTRDbGllbnRSZWN0TGlzdEQxRXY7
CiBfWk43V2ViQ29yZTE1c2V0RE9NRXhjZXB0aW9uRVBOM0pTQzlFeGVjU3RhdGVFaTsKK19aTjdX
ZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50MTVzZXRWYWx1ZUZvclVzZXJFUktOM1dURjZTdHJpbmdF
CiBfWk43V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDE3c2V0U3VnZ2VzdGVkVmFsdWVFUktOM1dU
RjZTdHJpbmdFOwogX1pON1dlYkNvcmUxNmpzU3RyaW5nU2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0
ZUVSTjNXVEY3SGFzaE1hcElQTlMzXzEwU3RyaW5nSW1wbEVOUzBfNFdlYWtJTlMwXzhKU1N0cmlu
Z0VFRU5TM18xMFN0cmluZ0hhc2hFTlMzXzEwSGFzaFRyYWl0c0lTNl9FRU5TQl9JUzlfRUVFRVM2
XzsKIF9aTjdXZWJDb3JlMTZzY3JpcHROYW1lVG9Db2RlRVJLTjNXVEY2U3RyaW5nRTsKSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDExNTY4NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMy
IEBACisyMDEyLTA0LTMwICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBNb3ZlIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRWYWx1ZUZvclVzZXIgdG8gSW50ZXJu
YWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDM5
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
dGhlIHNldFZhbHVlRm9yVXNlciBmcm9tIExheW91dFRlc3RDb250cm9sbGVyIHRvIEludGVybmFs
cyBhbmQKKyAgICAgICAgcmVtb3ZlIHRoZSBvbGQgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50
YXRpb25zIGFzIGl0IGV4Y2x1c2l2ZWx5IHRlc3RzCisgICAgICAgIFdlYkNvcmUgZnVuY3Rpb25h
bGl0eS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJy
eS9MYXlvdXRUZXN0Q29udHJvbGxlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVz
dENvbnRyb2xsZXJFZmwuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRU
ZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91
dFRlc3RDb250cm9sbGVyUXQuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91
dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwOgor
CiAyMDEyLTA0LTMwICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
Rml4IHRlc3RzIHRvIG5vdCBkZXBlbmQgb24gdGhlIGFjdHVhbCBsaXN0IG9mIGJ1aWxkZXJzIGF0
IGJ1aWxkLmNocm9taXVtLm9yZy4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDExNTY4NykKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5NSwy
MSArMTU5NSw2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFVzZXJTdHlsZVNoZWV0TG9jYXQKICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKLXN0YXRpYyBKU1Zh
bHVlUmVmIHNldFZhbHVlRm9yVXNlckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKLXsKLSAgICAvLyBIYXMgbWFjIGltcGxlbWVudGF0aW9uCi0gICAgaWYgKGFyZ3VtZW50Q291
bnQgIT0gMikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwot
Ci0gICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHZhbHVlKEFkb3B0LCBKU1ZhbHVlVG9TdHJp
bmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7Ci0gICAgQVNTRVJUKCEq
ZXhjZXB0aW9uKTsKLQotICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3Rh
dGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09i
amVjdCkpOwotICAgIGNvbnRyb2xsZXItPnNldFZhbHVlRm9yVXNlcihjb250ZXh0LCBhcmd1bWVu
dHNbMF0sIHZhbHVlLmdldCgpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKLX0KLQogc3RhdGljIEpTVmFsdWVSZWYgc2V0Vmlld01vZGVNZWRpYUZlYXR1cmVD
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyBp
bXBsZW1lbnRhdGlvbgpAQCAtMjQ1Miw3ICsyNDM3LDYgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5
b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmls
aXR5TW9kZSIsIHNldFVzZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAic2V0VXNlclN0eWxlU2hlZXRFbmFibGVkIiwgc2V0VXNlclN0eWxlU2hl
ZXRFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0VXNlclN0eWxlU2hlZXRM
b2NhdGlvbiIsIHNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAotICAg
ICAgICB7ICJzZXRWYWx1ZUZvclVzZXIiLCBzZXRWYWx1ZUZvclVzZXJDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJzZXRWaWV3TW9kZU1lZGlhRmVhdHVyZSIsIHNldFZpZXdNb2RlTWVkaWFG
ZWF0dXJlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0V2ViVmlld0VkaXRhYmxlIiwg
c2V0V2ViVmlld0VkaXRhYmxlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0V2lsbFNl
bmRSZXF1ZXN0Q2xlYXJIZWFkZXIiLCBzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlckNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmgJKHJldmlzaW9uIDExNTY4NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZShib29sIGZsYWcp
OwogICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9p
ZCBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpOwotICAgIHZvaWQg
c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBKU1N0
cmluZ1JlZiB2YWx1ZSk7CiAgICAgdm9pZCBzZXRWaWV3TW9kZU1lZGlhRmVhdHVyZShKU1N0cmlu
Z1JlZiBtb2RlKTsKICAgICB2b2lkIHNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wgZmxhZyk7CiAg
ICAgdm9pZCBzZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKGJvb2wgZW5hYmxlKTsKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0Jl
cnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0xh
eW91dFRlc3RDb250cm9sbGVyQmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDExNTY4NykKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0Jl
cnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODU0LDE5ICs4NTQsNiBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpkZWxldGVMb2NhbFN0CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KIH0K
IAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKQotewot
ICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBXZWJDb3JlOjpF
bGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KHRvSlMoZXhlYywgbm9kZU9iamVjdCkpOwotICAg
IGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQqIGlucHV0RWxlbWVudCA9IGVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgaWYg
KCFpbnB1dEVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlucHV0RWxlbWVudC0+c2V0
VmFsdWVGb3JVc2VyKGpzU3RyaW5nUmVmVG9XZWJDb3JlU3RyaW5nKHZhbHVlKSk7Ci19Ci0KIGxv
bmcgbG9uZyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXBwbGljYXRpb25DYWNoZURpc2tVc2FnZUZv
ck9yaWdpbihKU1N0cmluZ1JlZiBvcmlnaW4pCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0
byBzdXBwb3J0IGdldHRpbmcgZGlzayB1c2FnZSBieSBhbGwgYXBwbGljYXRpb24gY2FjaGVzIGZv
ciBhbiBvcmlnaW4uCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxMTU2ODcpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIwMyw3ICsyMDMsNiBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0
VGVzdENvbnRyb2xsCiAgICAgYmluZE1ldGhvZCgic2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1l
bnRzIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVu
dHMpOwogICAgIGJpbmRNZXRob2QoInNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZCIsICZMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKTsKICAgICBiaW5kTWV0aG9k
KCJzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRV
c2VyU3R5bGVTaGVldExvY2F0aW9uKTsKLSAgICBiaW5kTWV0aG9kKCJzZXRWYWx1ZUZvclVzZXIi
LCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFZhbHVlRm9yVXNlcik7CiAgICAgYmluZE1ldGhv
ZCgic2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyKTsKICAgICBiaW5kTWV0aG9kKCJzZXRXaWxs
U2VuZFJlcXVlc3RSZXR1cm5zTnVsbCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0V2lsbFNl
bmRSZXF1ZXN0UmV0dXJuc051bGwpOwogICAgIGJpbmRNZXRob2QoInNldFdpbGxTZW5kUmVxdWVz
dFJldHVybnNOdWxsT25SZWRpcmVjdCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0V2lsbFNl
bmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0KTsKQEAgLTIwOTAsMjMgKzIwODksNiBAQCB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRvZmlsbGVkCiAgICAgaW5wdXQtPnNldEF1
dG9maWxsZWQoYXJndW1lbnRzWzFdLnZhbHVlLmJvb2xWYWx1ZSk7CiB9CiAKLXZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldFZhbHVlRm9yVXNlcihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
Z3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIHJlc3VsdC0+c2V0TnVsbCgpOwot
ICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpICE9IDIpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdl
YkVsZW1lbnQgZWxlbWVudDsKLSAgICBpZiAoIVdlYkJpbmRpbmdzOjpnZXRFbGVtZW50KGFyZ3Vt
ZW50c1swXS52YWx1ZS5vYmplY3RWYWx1ZSwgJmVsZW1lbnQpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBXZWJJbnB1dEVsZW1lbnQqIGlucHV0ID0gdG9XZWJJbnB1dEVsZW1lbnQoJmVsZW1lbnQp
OwotICAgIGlmICghaW5wdXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlucHV0LT5zZXRWYWx1
ZShjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzFdKSwgdHJ1ZSk7Ci19Ci0KIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmRlbGV0ZUFsbExvY2FsU3RvcmFnZShjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCopCiB7CiAgICAgLy8gTm90IEltcGxlbWVu
dGVkCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDExNTY4NykKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
NCwxMCArMzk0LDYgQEAgcHVibGljOgogICAgIC8vIEZvcndhcmRzIHRoZSBzZXRBdXRvZmlsbGVk
KCkgY2FsbCB0byB0aGUgZWxlbWVudC4KICAgICB2b2lkIHNldEF1dG9maWxsZWQoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCi0gICAgLy8gRXhwZWN0cyB0aGUgZmlyc3Qg
YXJndW1lbnQgdG8gYmUgYW4gaW5wdXQgZWxlbWVudCBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCB0
byBiZSBhIHN0cmluZyB2YWx1ZS4KLSAgICAvLyBGb3J3YXJkcyB0aGUgc2V0VmFsdWVGb3JVc2Vy
KCkgY2FsbCB0byB0aGUgZWxlbWVudC4KLSAgICB2b2lkIHNldFZhbHVlRm9yVXNlcihjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0KICAgICAvLyBMb2NhbFN0b3JhZ2Ugb3Jp
Z2luLXJlbGF0ZWQKICAgICB2b2lkIGRlbGV0ZUFsbExvY2FsU3RvcmFnZShjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBvcmlnaW5zV2l0aExvY2FsU3RvcmFn
ZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAJKHJl
dmlzaW9uIDExNTY4NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29u
dHJvbGxlckVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MywxMSArMjczLDYgQEAgdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VXNlclN0eWxlUwogICAgICAgICBzZXRVc2VyU3R5bGVT
aGVldEVuYWJsZWQodHJ1ZSk7CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFZh
bHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBK
U1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldFZh
bHVlRm9yVXNlcihjb250ZXh0LCBub2RlT2JqZWN0LCB2YWx1ZSk7Ci19Ci0KIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKEpTU3RyaW5nUmVmIG1vZGUp
CiB7CiAgICAgRXZhc19PYmplY3QqIHZpZXcgPSBicm93c2VyLT5tYWluVmlldygpOwpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJH
dGsuY3BwCShyZXZpc2lvbiAxMTU2ODcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5
b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsMTEgKzMzMiw2
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFVzZXJTdHlsZVMKICAgICAgICAgc2V0
VXNlclN0eWxlU2hlZXRFbmFibGVkKHRydWUpOwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9k
ZU9iamVjdCwgSlNTdHJpbmdSZWYgdmFsdWUpCi17Ci0gICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrOjpzZXRWYWx1ZUZvclVzZXIoY29udGV4dCwgbm9kZU9iamVjdCwgdmFsdWUpOwotfQotCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRWaWV3TW9kZU1lZGlhRmVhdHVyZShKU1N0cmlu
Z1JlZiBtb2RlKQogewogICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1l
X2dldF93ZWJfdmlldyhtYWluRnJhbWUpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gMTE1Njg3KQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC02NDcsMTYgKzY0Nyw2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldFVzZXJTdHlsZVMKICAgICBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5j
ZXNdIHNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb246dXJsXTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVl
UmVmIG5vZGVPYmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKQotewotICAgIERPTUVsZW1lbnQgKmVs
ZW1lbnQgPSBbRE9NRWxlbWVudCBfRE9NRWxlbWVudEZyb21KU0NvbnRleHQ6Y29udGV4dCB2YWx1
ZTpub2RlT2JqZWN0XTsKLSAgICBpZiAoIWVsZW1lbnQgfHwgIVtlbGVtZW50IGlzS2luZE9mQ2xh
c3M6W0RPTUhUTUxJbnB1dEVsZW1lbnQgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZUNGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHZhbHVlKSk7Ci0gICAgWyhET01IVE1MSW5wdXRFbGVt
ZW50ICopZWxlbWVudCBfc2V0VmFsdWVGb3JVc2VyOihOU1N0cmluZyAqKXZhbHVlQ0YuZ2V0KCld
OwotfQotCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRWaWV3TW9kZU1lZGlhRmVhdHVy
ZShKU1N0cmluZ1JlZiBtb2RlKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3Bw
CShyZXZpc2lvbiAxMTU2ODcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgzLDExICs0ODMsNiBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZhU2NyaXB0CiAgICAgRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKG1fdG9wTG9hZGluZ0ZyYW1l
LCBlbmFibGUpOwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRWYWx1ZUZvclVz
ZXIoY29uc3QgUVdlYkVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKQotewot
ICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRWYWx1ZUZvclVzZXIoZWxlbWVudCwgdmFs
dWUpOwotfQotCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRGaXhlZENvbnRlbnRzU2l6
ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgbV90b3BMb2FkaW5nRnJhbWUtPnBhZ2Uo
KS0+c2V0UHJlZmVycmVkQ29udGVudHNTaXplKFFTaXplKHdpZHRoLCBoZWlnaHQpKTsKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJ
KHJldmlzaW9uIDExNTY4NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw2IEBAIHB1YmxpYyBz
bG90czoKICAgICB2b2lkIHNldEFwcENhY2hlTWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25n
IHF1b3RhKTsKICAgICB2b2lkIHNldEF1dG9maWxsZWQoY29uc3QgUVdlYkVsZW1lbnQmLCBib29s
IGVuYWJsZSk7CiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChib29sIGVu
YWJsZSk7Ci0gICAgdm9pZCBzZXRWYWx1ZUZvclVzZXIoY29uc3QgUVdlYkVsZW1lbnQmLCBjb25z
dCBRU3RyaW5nJiB2YWx1ZSk7CiAgICAgdm9pZCBzZXRGaXhlZENvbnRlbnRzU2l6ZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpOwogICAgIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29s
IGVuYWJsZSk7CiAgICAgdm9pZCBzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoYm9vbCBlbmFi
bGVkKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxl
cldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRl
c3RDb250cm9sbGVyV2luLmNwcAkocmV2aXNpb24gMTE1Njg3KQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Nzc3LDI5ICs3NzcsNiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRVc2VyU3R5bGVT
CiAgICAgU3lzRnJlZVN0cmluZyhyZXN1bHRQYXRoQlNUUik7CiB9CiAKLXZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1
ZVJlZiBlbGVtZW50LCBKU1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICBDT01QdHI8SVdlYlZpZXc+
IHdlYlZpZXc7Ci0gICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlPiB3ZWJWaWV3UHJpdmF0
ZShRdWVyeSwgd2ViVmlldyk7Ci0gICAgaWYgKCF3ZWJWaWV3UHJpdmF0ZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgQ09NUHRyPElET01FbGVtZW50PiBkb21FbGVtZW50OwotICAgIGlmIChGQUlM
RUQod2ViVmlld1ByaXZhdGUtPmVsZW1lbnRGcm9tSlMoY29udGV4dCwgZWxlbWVudCwgJmRvbUVs
ZW1lbnQpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ09NUHRyPElET01IVE1MSW5wdXRFbGVt
ZW50PiBkb21JbnB1dEVsZW1lbnQ7Ci0gICAgaWYgKEZBSUxFRChkb21FbGVtZW50LT5RdWVyeUlu
dGVyZmFjZShJSURfSURPTUhUTUxJbnB1dEVsZW1lbnQsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoq
PigmZG9tSW5wdXRFbGVtZW50KSkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBfYnN0cl90IHZh
bHVlQlNUUihKU1N0cmluZ0NvcHlCU1RSKHZhbHVlKSwgZmFsc2UpOwotCi0gICAgZG9tSW5wdXRF
bGVtZW50LT5zZXRWYWx1ZUZvclVzZXIodmFsdWVCU1RSKTsKLX0KLQogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoSlNTdHJpbmdSZWYgbW9kZSkKIHsK
ICAgICAvLyBGSVhNRTogaW1wbGVtZW50CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9M
YXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAkocmV2aXNpb24gMTE1Njg3KQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzNSwxMSArMTM1LDYgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0VXNlclN0eWxlUwogewogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRWYWx1
ZUZvclVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZWxlbWVudCwgSlNTdHJp
bmdSZWYgdmFsdWUpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotfQotCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRWaWV3TW9kZU1lZGlhRmVhdHVyZShKU1N0cmluZ1JlZiBtb2Rl
KQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTY4NykK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDEyLTA0LTMwICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBNb3ZlIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRWYWx1ZUZvclVzZXIgdG8gSW50ZXJuYWxz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDM5OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhl
IHNldFZhbHVlRm9yVXNlciBmcm9tIExheW91dFRlc3RDb250cm9sbGVyIHRvIEludGVybmFscyBh
bmQKKyAgICAgICAgcmVtb3ZlIHRoZSBvbGQgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50YXRp
b25zIGFzIGl0IGV4Y2x1c2l2ZWx5IHRlc3RzCisgICAgICAgIFdlYkNvcmUgZnVuY3Rpb25hbGl0
eS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvb25jaGFuZ2Utc2V0dmFsdWVmb3J1c2VyLmh0bWw6
CisKIDIwMTItMDQtMzAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgTlVMTCBwdHIgaW4gV2ViQ29yZTo6UmFuZ2U6OmdldEJvcmRlckFuZFRleHRRdWFkcwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbmNoYW5nZS1zZXR2YWx1ZWZvcnVzZXIuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29uY2hhbmdlLXNldHZhbHVlZm9y
dXNlci5odG1sCShyZXZpc2lvbiAxMTU2ODcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29u
Y2hhbmdlLXNldHZhbHVlZm9ydXNlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw4ICsxNSw4
IEBACiAgICAgICAgIH0KIAogICAgICAgICB0Zi5mb2N1cygpOwotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRWYWx1ZUZvclVzZXIodGYsICdIZWxsbyEnKTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpIHsKKyAgICAgICAgICAgIGludGVybmFscy5zZXRWYWx1ZUZvclVzZXIodGYsICdIZWxs
byEnKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNob3VsZCBub3QgZmlyZSB0aGUgZXZlbnQg
dW50aWwgZm9jdXMgaXMgbG9zdC4K
</data>
<flag name="review"
          id="145205"
          type_id="1"
          status="-"
          setter="morrita"
    />
    <flag name="commit-queue"
          id="145220"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214175</attachid>
            <date>2013-10-14 11:57:21 -0700</date>
            <delta_ts>2013-10-14 12:39:54 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>0001-Move-setValueForUser-to-internals.patch</filename>
            <type>text/plain</type>
            <size>20512</size>
            <attacher name="Andre Loureiro (IRC: loureiro)">andre.vl</attacher>
            
              <data encoding="base64">RnJvbSBlYzA0NzgzZmJjZWNjMTEyZmY3YTViYTczMmE5ODNkMTg5MGE1ODhlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZSBMb3VyZWlybyA8YW5kcmUudmxAc2Ftc3VuZy5jb20+
CkRhdGU6IE1vbiwgMTQgT2N0IDIwMTMgMTQ6NDA6MjYgLTA0MDAKU3ViamVjdDogW1BBVENIXSBN
b3ZlIHNldFZhbHVlRm9yVXNlciB0byBpbnRlcm5hbHMKIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NDM5OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpTb3Vy
Y2UvV2ViQ29yZToKCk5vIG5ldyB0ZXN0cyAoT09QUyEpLgoKKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CihXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFZhbHVlRm9yVXNlcik6CiogdGVzdGluZy9JbnRl
cm5hbHMuaDoKKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CgpTb3VyY2UvV2ViS2l0L2VmbDoKCiog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKClNvdXJjZS9XZWJLaXQvZ3RrOgoKKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgoqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgoKVG9vbHM6CgoqIER1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuY3BwOgooVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKToKKiBEdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmg6CiogRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwu
Y3BwOgoqIER1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcDoKKiBEdW1wUmVuZGVy
VHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKiBEdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5l
cldpbi5jcHA6CiogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbDoKKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwOgoqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgoKTGF5
b3V0VGVzdHM6CgoqIGZhc3QvZm9ybXMvb25jaGFuZ2Utc2V0dmFsdWVmb3J1c2VyLmh0bWw6Ci0t
LQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
OSArKysrKysrKysKIC4uLi9mYXN0L2Zvcm1zL29uY2hhbmdlLXNldHZhbHVlZm9ydXNlci5odG1s
ICAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAxNCArKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgICAgICAgICAgICAgICB8ICA5ICsrKysrKysrKwogU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaCAgICAgICAgICAgICAgICAgfCAgMSArCiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwgICAgICAgICAgICAgICB8ICAyICsrCiBTb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrKysrKysK
IC4uLi9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwICAgIHwgMTMg
LS0tLS0tLS0tLS0tCiAuLi4vZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbC5oICB8ICAxIC0KIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgIHwgMTAgKysrKysrKysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0ay5jcHAgICAgfCAxNiAtLS0tLS0tLS0tLS0tLS0KIC4uLi9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmggIHwgIDEgLQogVG9vbHMvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxOCArKysrKysrKysrKysr
KysrKwogVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgICAgICAgICAgICAgICAg
fCAxNiAtLS0tLS0tLS0tLS0tLS0KIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaCAg
ICAgICAgICAgICAgICAgIHwgIDEgLQogVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5u
ZXJFZmwuY3BwICAgICAgICAgfCAgNSAtLS0tLQogVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rl
c3RSdW5uZXJHdGsuY3BwICAgICAgICAgfCAgNSAtLS0tLQogVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1Rlc3RSdW5uZXJNYWMubW0gICAgICAgICAgfCAxMCAtLS0tLS0tLS0tCiBUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAgICAgICAgICB8IDIzIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIC4uLi9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCAg
ICAgICAgIHwgIDIgLS0KIC4uLi9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwIHwgIDkgLS0tLS0tLS0tCiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaCB8ICAyIC0tCiAyMiBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRp
b25zKCspLCAxMDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM0NzQ0ZGIuLjI1ZDBkZDQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMC0xNCAgQW5kcmUgTG91cmVpcm8gIDxhbmRyZS52bEBz
YW1zdW5nLmNvbT4KKworICAgICAgICBNb3ZlIHNldFZhbHVlRm9yVXNlciB0byBpbnRlcm5hbHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Mzk4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zv
cm1zL29uY2hhbmdlLXNldHZhbHVlZm9ydXNlci5odG1sOgorCiAyMDEzLTEwLTE0ICBHeXV5b3Vu
ZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4g
RUZMIEdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvb25jaGFu
Z2Utc2V0dmFsdWVmb3J1c2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29uY2hhbmdl
LXNldHZhbHVlZm9ydXNlci5odG1sCmluZGV4IDc1ODM3ZmIuLjk2NmVjNzUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvb25jaGFuZ2Utc2V0dmFsdWVmb3J1c2VyLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbmNoYW5nZS1zZXR2YWx1ZWZvcnVzZXIuaHRtbApA
QCAtMTUsOCArMTUsOCBAQAogICAgICAgICB9CiAKICAgICAgICAgdGYuZm9jdXMoKTsKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFZh
bHVlRm9yVXNlcih0ZiwgJ0hlbGxvIScpOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykg
eworICAgICAgICAgICAgaW50ZXJuYWxzLnNldFZhbHVlRm9yVXNlcih0ZiwgJ0hlbGxvIScpOwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gU2hvdWxkIG5vdCBmaXJlIHRoZSBldmVudCB1bnRpbCBm
b2N1cyBpcyBsb3N0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDkyOTVmZDYuLjc3ZWI3NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxMy0xMC0xNCAgQW5kcmUgTG91cmVpcm8gIDxhbmRyZS52bEBz
YW1zdW5nLmNvbT4KKworICAgICAgICBNb3ZlIHNldFZhbHVlRm9yVXNlciB0byBpbnRlcm5hbHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Mzk4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFZhbHVlRm9yVXNlcik6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTMt
MTAtMTQgIEFydmlkIE5pbHNzb24gIDxhbmlsc3NvbkBibGFja2JlcnJ5LmNvbT4KIAogICAgICAg
ICBEb24ndCBjcmFzaCBhZnRlciBPcGVuR0wgcm9idXN0bmVzcyByZXNldApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDVmZGY2ODMuLmY1YzZmMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIwODksNCArMjA4OSwxMyBAQCBib29sIEludGVybmFs
czo6aXNQbHVnaW5VbmF2YWlsYWJpbGl0eUluZGljYXRvck9ic2N1cmVkKEVsZW1lbnQqIGVsZW1l
bnQsIEV4Y2VwdAogICAgIHJldHVybiBlbWJlZC0+aXNSZXBsYWNlbWVudE9ic2N1cmVkKCk7CiB9
CiAKK3ZvaWQgSW50ZXJuYWxzOjpzZXRWYWx1ZUZvclVzZXIoRWxlbWVudCogZWxlbWVudCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFlbGVtZW50
ICYmICFlbGVtZW50LT50b0lucHV0RWxlbWVudCgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9B
Q0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVsZW1lbnQtPnRvSW5wdXRF
bGVtZW50KCktPnNldFZhbHVlRm9yVXNlcih2YWx1ZSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCmluZGV4IDkwYWFhYjEuLmYwMWMwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaApAQCAtMzE4LDYgKzMxOCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgYm9v
bCBpc1BsdWdpblVuYXZhaWxhYmlsaXR5SW5kaWNhdG9yT2JzY3VyZWQoRWxlbWVudCosIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldFZhbHVlRm9yVXNlcihFbGVtZW50KiwgY29uc3QgU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFs
cyhEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGJhYTQx
YzUuLjgzNTg5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTI3Miw0
ICsyNzIsNiBAQAogICAgIFtSYWlzZXNFeGNlcHRpb25dIGJvb2xlYW4gaXNQbHVnaW5VbmF2YWls
YWJpbGl0eUluZGljYXRvck9ic2N1cmVkKEVsZW1lbnQgZWxlbWVudCk7CiAKICAgICBbUmFpc2Vz
RXhjZXB0aW9uXSBDbGllbnRSZWN0IHNlbGVjdGlvbkJvdW5kcygpOworCisgICAgW1JhaXNlc0V4
Y2VwdGlvbl0gdm9pZCBzZXRWYWx1ZUZvclVzZXIoRWxlbWVudCBpbnB1dEVsZW1lbnQsIERPTVN0
cmluZyB2YWx1ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDczOTAwZDUuLjQzNTA3NWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMC0xNCAgQW5kcmUgTG91cmVp
cm8gIDxhbmRyZS52bEBzYW1zdW5nLmNvbT4KKworICAgICAgICBNb3ZlIHNldFZhbHVlRm9yVXNl
ciB0byBpbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg0Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgorCiAyMDEz
LTEwLTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ29uc29saWRh
dGUgZmluZFN0cmluZyBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCmluZGV4IDlj
NjhjOTEuLmYyNjk2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApAQCAtMjMyLDE5ICsy
MzIsNiBAQCBjb25zdCBXZWJDb3JlOjpVUkwgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpwcm92
aXNpb25hbFVSTChjb25zdCBFdmFzX09iamVjdCogZQogICAgIHJldHVybiBwcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyLT51cmwoKTsKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIHZhbHVlKQotewotICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0g
dG9KUyhjb250ZXh0KTsKLSAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50ID0gV2ViQ29yZTo6
dG9FbGVtZW50KHRvSlMoZXhlYywgbm9kZU9iamVjdCkpOwotICAgIGlmICghZWxlbWVudCkKLSAg
ICAgICAgcmV0dXJuOwotICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVu
dCA9IGVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgaWYgKCFpbnB1dEVsZW1lbnQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlucHV0RWxlbWVudC0+c2V0VmFsdWVGb3JVc2VyKHZhbHVl
KTsKLX0KLQogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldERlZmVyc0xvYWRpbmco
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgZGVmZXJzKQogewogICAgIERSVF9TVVBQUlRfUEFH
RV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmggYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaAppbmRl
eCA1OGNkNDgzLi44M2RjZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaApAQCAtNjgsNyArNjgs
NiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBzdWl0YWJsZURSVEZyYW1lTmFtZShjb25z
dCBFdmFzX09iamVjdCogZXdrRnJhbWUpOwogICAgIHN0YXRpYyBjb25zdCBXZWJDb3JlOjpVUkwg
cHJvdmlzaW9uYWxVUkwoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKICAgICBzdGF0aWMg
U3RyaW5nIGxheWVyVHJlZUFzVGV4dChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpOwotICAg
IHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgbm9k
ZU9iamVjdCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgc2V0RGVmZXJz
TG9hZGluZyhFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBkZWZlcnMpOwogICAgIHN0YXRpYyB2
b2lkIHNldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5nKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBib29sIGxvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVm
ZXJlbmNlcyk7CiAgICAgc3RhdGljIHZvaWQgc2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZShFdmFz
X09iamVjdCogZXdrVmlldywgaW50IHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGRjMTE1MTIu
LjAxYTgzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMC0xNCAg
QW5kcmUgTG91cmVpcm8gIDxhbmRyZS52bEBzYW1zdW5nLmNvbT4KKworICAgICAgICBNb3ZlIHNl
dFZhbHVlRm9yVXNlciB0byBpbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg0Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGsuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5oOgorCiAyMDEzLTEwLTA5ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bWFyaW8ucHJhZGFAc2Ft
c3VuZy5jb20+CiAKICAgICAgICAgW0FUS10gSW1wbGVtZW50IG5ldyBBUEkgaW4gQXRrVGV4dDog
YXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAK
aW5kZXggYzk4ZmQwNi4uMjMwNTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBAIC00
NzYsMjIgKzQ3Niw2IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpmaW5kU3RyaW5n
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiB0CiAgICAgcmV0dXJuIGNvcmUo
d2ViVmlldyktPmZpbmRTdHJpbmcoU3RyaW5nOjpmcm9tVVRGOCh0YXJnZXRTdHJpbmcpLCBmaW5k
T3B0aW9ucyk7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRWYWx1ZUZv
clVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgSlNTdHJp
bmdSZWYgdmFsdWUpCi17Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQp
OwotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQodG9KUyhleGVjLCBub2RlT2JqZWN0
KSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0gICAgSFRNTElucHV0RWxl
bWVudCogaW5wdXRFbGVtZW50ID0gZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICBpZiAo
IWlucHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2l6ZV90IGJ1ZmZlclNpemUg
PSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUodmFsdWUpOwotICAgIEdPd25QdHI8
Z2NoYXI+IHZhbHVlQnVmZmVyKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6
ZSkpKTsKLSAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKHZhbHVlLCB2YWx1ZUJ1ZmZlci5nZXQo
KSwgYnVmZmVyU2l6ZSk7Ci0gICAgaW5wdXRFbGVtZW50LT5zZXRWYWx1ZUZvclVzZXIoU3RyaW5n
Ojpmcm9tVVRGOCh2YWx1ZUJ1ZmZlci5nZXQoKSkpOwotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6cmVjdGFuZ2xlRm9yU2VsZWN0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwg
Y2Fpcm9fcmVjdGFuZ2xlX2ludF90KiByZWN0YW5nbGUpCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUoZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAppbmRleCA0ZmQ2MjU1Li44NmI3
ZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaApAQCAtNjYsNyArNjYsNiBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEF0a09iamVjdCogZ2V0Rm9jdXNlZEFjY2Vzc2libGVFbGVtZW50KFdlYktpdFdl
YkZyYW1lKik7CiAgICAgc3RhdGljIEF0a09iamVjdCogZ2V0Um9vdEFjY2Vzc2libGVFbGVtZW50
KFdlYktpdFdlYkZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgbGF5b3V0RnJhbWUoV2ViS2l0V2Vi
RnJhbWUqKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmLCBK
U1ZhbHVlUmVmLCBKU1N0cmluZ1JlZik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQ2xvc2UoV2Vi
S2l0V2ViRnJhbWUqKTsKIAogICAgIC8vIFdlYktpdFdlYlZpZXcKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlN2FkYTI5Li45OTY1ZjRkIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTMtMTAtMTQgIEFuZHJlIExvdXJlaXJvICA8YW5kcmUudmxAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgTW92ZSBzZXRWYWx1ZUZvclVzZXIgdG8gaW50ZXJuYWxzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDM5OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVz
dFJ1bm5lci5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3Rr
L1Rlc3RSdW5uZXJHdGsuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNw
cDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmg6CisKIDIwMTMtMTAtMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIERlcHJlY2F0ZSBvciByZW1vdmUgZGVsZXRlQWxsVmFsdWVzIGZ1bmN0
aW9uczsgdGhlcmUgYXJlIG9ubHkgYSBmZXcgY2FsbCBzaXRlcyBsZWZ0CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuY3BwCmluZGV4IDVjMGQwM2MuLjQ4OWU1MmEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuY3BwCkBAIC0xMzc3LDIxICsxMzc3LDYgQEAgc3RhdGljIEpTVmFsdWVSZWYg
c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamUKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKLXN0
YXRpYyBKU1ZhbHVlUmVmIHNldFZhbHVlRm9yVXNlckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKLXsKLSAgICAvLyBIYXMgbWFjIGltcGxlbWVudGF0aW9uCi0gICAgaWYgKGFy
Z3VtZW50Q291bnQgIT0gMikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOwotCi0gICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHZhbHVlKEFkb3B0LCBKU1Zh
bHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7Ci0gICAg
QVNTRVJUKCEqZXhjZXB0aW9uKTsKLQotICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0
aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAg
ICBjb250cm9sbGVyLT5zZXRWYWx1ZUZvclVzZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCB2YWx1
ZS5nZXQoKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci19
Ci0KIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFZpZXdNb2RlTWVkaWFGZWF0dXJlQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRp
b24KQEAgLTIxNjgsNyArMjE1Myw2IEBAIEpTU3RhdGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0
YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNldFVzZURhc2hib2FyZENvbXBhdGliaWxpdHlN
b2RlIiwgc2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGVDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQiLCBzZXRVc2VyU3R5bGVTaGVldEVu
YWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRVc2VyU3R5bGVTaGVldExvY2F0
aW9uIiwgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAg
IHsgInNldFZhbHVlRm9yVXNlciIsIHNldFZhbHVlRm9yVXNlckNhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgInNldFZpZXdNb2RlTWVkaWFGZWF0dXJlIiwgc2V0Vmlld01vZGVNZWRpYUZlYXR1
cmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRXZWJWaWV3RWRpdGFibGUiLCBzZXRX
ZWJWaWV3RWRpdGFibGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRXaWxsU2VuZFJl
cXVlc3RDbGVhckhlYWRlciIsIHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAppbmRleCA4Y2RhY2Q5Li4zMjE2MDFl
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCkBAIC0xMTQsNyArMTE0LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUoYm9vbCBmbGFnKTsK
ICAgICB2b2lkIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChib29sIGZsYWcpOwogICAgIHZvaWQg
c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKLSAgICB2b2lkIHNl
dFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgSlNTdHJp
bmdSZWYgdmFsdWUpOwogICAgIHZvaWQgc2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoSlNTdHJpbmdS
ZWYpOwogICAgIHZvaWQgc2V0WFNTQXVkaXRvckVuYWJsZWQoYm9vbCBmbGFnKTsKICAgICB2b2lk
IHNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2VmbC9UZXN0UnVubmVyRWZsLmNwcAppbmRleCAwNzQ2ZTUyLi5hYTYxZDViIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCkBAIC0yNDQsMTEgKzI0NCw2IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBw
YXRoKQogICAgICAgICBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQodHJ1ZSk7CiB9CiAKLXZvaWQg
VGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVl
UmVmIG5vZGVPYmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKQotewotICAgIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbDo6c2V0VmFsdWVGb3JVc2VyKGNvbnRleHQsIG5vZGVPYmplY3QsIHZhbHVlLT5z
dHJpbmcoKSk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUo
SlNTdHJpbmdSZWYgbW9kZSkKIHsKICNpZiBFTkFCTEUoVklFV19NT0RFX0NTU19NRURJQSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcAppbmRleCAyNjVmYjVjLi4w
ODc2OTBlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0
ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCkBA
IC0yNzEsMTEgKzI3MSw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRMb2Nh
dGlvbihKU1N0cmluZ1JlZiBwYXRoKQogICAgICAgICBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQo
dHJ1ZSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKQotewot
ICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0VmFsdWVGb3JVc2VyKGNvbnRleHQsIG5v
ZGVPYmplY3QsIHZhbHVlKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRWaWV3TW9kZU1lZGlh
RmVhdHVyZShKU1N0cmluZ1JlZiBtb2RlKQogewogICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSB3
ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCBhNDZkNDI4Li43YTlhOGY2IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtNTkyLDE2ICs1OTIsNiBA
QCB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYg
cGF0aCkKICAgICBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHNldFVzZXJT
dHlsZVNoZWV0TG9jYXRpb246dXJsXTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRWYWx1ZUZv
clVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgSlNTdHJp
bmdSZWYgdmFsdWUpCi17Ci0gICAgRE9NRWxlbWVudCAqZWxlbWVudCA9IFtET01FbGVtZW50IF9E
T01FbGVtZW50RnJvbUpTQ29udGV4dDpjb250ZXh0IHZhbHVlOm5vZGVPYmplY3RdOwotICAgIGlm
ICghZWxlbWVudCB8fCAhW2VsZW1lbnQgaXNLaW5kT2ZDbGFzczpbRE9NSFRNTElucHV0RWxlbWVu
dCBjbGFzc11dKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHZhbHVlQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHZhbHVlKSk7Ci0gICAgWyhET01IVE1MSW5wdXRFbGVtZW50ICopZWxlbWVudCBzZXRWYWx1
ZUZvclVzZXI6KE5TU3RyaW5nICopdmFsdWVDRi5nZXQoKV07Ci19Ci0KIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoSlNTdHJpbmdSZWYgbW9kZSkKIHsKICAgICAvLyBG
SVhNRTogaW1wbGVtZW50CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVz
dFJ1bm5lcldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5j
cHAKaW5kZXggM2ZiMWM1YS4uM2ZjNDYyNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9U
ZXN0UnVubmVyV2luLmNwcApAQCAtNjY3LDI5ICs2NjcsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNl
dFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYganNVUkwpCiAgICAgU3lzRnJlZVN0
cmluZyhyZXN1bHRQYXRoQlNUUik7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JV
c2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGVsZW1lbnQsIEpTU3RyaW5nUmVm
IHZhbHVlKQotewotICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKLSAgICBpZiAoRkFJTEVE
KGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENPTVB0
cjxJV2ViVmlld1ByaXZhdGU+IHdlYlZpZXdQcml2YXRlKFF1ZXJ5LCB3ZWJWaWV3KTsKLSAgICBp
ZiAoIXdlYlZpZXdQcml2YXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDT01QdHI8SURPTUVs
ZW1lbnQ+IGRvbUVsZW1lbnQ7Ci0gICAgaWYgKEZBSUxFRCh3ZWJWaWV3UHJpdmF0ZS0+ZWxlbWVu
dEZyb21KUyhjb250ZXh0LCBlbGVtZW50LCAmZG9tRWxlbWVudCkpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBDT01QdHI8SURPTUhUTUxJbnB1dEVsZW1lbnQ+IGRvbUlucHV0RWxlbWVudDsKLSAg
ICBpZiAoRkFJTEVEKGRvbUVsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NSFRNTElucHV0
RWxlbWVudCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZkb21JbnB1dEVsZW1lbnQpKSkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIF9ic3RyX3QgdmFsdWVCU1RSKEpTU3RyaW5nQ29weUJTVFIo
dmFsdWUpLCBmYWxzZSk7Ci0KLSAgICBkb21JbnB1dEVsZW1lbnQtPnNldFZhbHVlRm9yVXNlcih2
YWx1ZUJTVFIpOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNldFZpZXdNb2RlTWVkaWFGZWF0dXJl
KEpTU3RyaW5nUmVmIG1vZGUpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwKaW5kZXggZTI2MmIyNS4uMmJjMDRhOCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsCkBAIC05Miw4ICs5Miw2IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICAv
LyBQcmludGluZwogICAgIGJvb2xlYW4gaXNQYWdlQm94VmlzaWJsZShpbnQgcGFnZUluZGV4KTsK
IAotICAgIFtQYXNzQ29udGV4dF0gdm9pZCBzZXRWYWx1ZUZvclVzZXIob2JqZWN0IGVsZW1lbnQs
IERPTVN0cmluZyB2YWx1ZSk7Ci0KICAgICAvLyBVc2VyQ29udGVudCB0ZXN0aW5nLgogICAgIHZv
aWQgYWRkVXNlclNjcmlwdChET01TdHJpbmcgc291cmNlLCBib29sZWFuIHJ1bkF0U3RhcnQsIGJv
b2xlYW4gYWxsRnJhbWVzKTsKICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KERPTVN0cmluZyBz
b3VyY2UsIGJvb2xlYW4gYWxsRnJhbWVzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDNmMmQwMzguLjk3MjkyNGMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcApAQCAtMzY3LDE1ICszNjcsNiBAQCBib29sIFRlc3RSdW5uZXI6OmlzUGFnZUJv
eFZpc2libGUoaW50IHBhZ2VJbmRleCkKICAgICByZXR1cm4gV0tCdW5kbGVJc1BhZ2VCb3hWaXNp
YmxlKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgbWFpbkZyYW1lLCBwYWdlSW5k
ZXgpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiBlbGVtZW50LCBKU1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICBp
ZiAoIWVsZW1lbnQgfHwgIUpTVmFsdWVJc09iamVjdChjb250ZXh0LCBlbGVtZW50KSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVOb2RlSGFuZGxlUmVmPiBub2Rl
SGFuZGxlKEFkb3B0V0ssIFdLQnVuZGxlTm9kZUhhbmRsZUNyZWF0ZShjb250ZXh0LCBjb25zdF9j
YXN0PEpTT2JqZWN0UmVmPihlbGVtZW50KSkpOwotICAgIFdLQnVuZGxlTm9kZUhhbmRsZVNldEhU
TUxJbnB1dEVsZW1lbnRWYWx1ZUZvclVzZXIobm9kZUhhbmRsZS5nZXQoKSwgdG9XSyh2YWx1ZSku
Z2V0KCkpOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNldEF1ZGlvUmVzdWx0KEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVm
PiBhdWRpb0RhdGEoQWRvcHRXSywgV0tCdW5kbGVDcmVhdGVXS0RhdGFGcm9tVUludDhBcnJheShJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIGNvbnRleHQsIGRhdGEpKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5k
ZXggMzhjZWY2Yi4uNzFlN2M3NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTE1OCw4ICsxNTgsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKEpTU3RyaW5nUmVmKTsKICAgICB2b2lk
IHNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQoSlNTdHJpbmdSZWYpOwogCi0gICAgdm9pZCBzZXRW
YWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmIGVsZW1lbnQsIEpTU3RyaW5nUmVm
IHZhbHVlKTsKLQogICAgIC8vIEF1ZGlvIHRlc3RpbmcuCiAgICAgdm9pZCBzZXRBdWRpb1Jlc3Vs
dChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgZGF0YSk7CiAKLS0gCjEuOC4xLjIKCg==
</data>
<flag name="commit-queue"
          id="236694"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214182</attachid>
            <date>2013-10-14 12:40:42 -0700</date>
            <delta_ts>2013-10-15 08:31:01 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>0001-Move-setValueForUser-to-Internals.patch</filename>
            <type>text/plain</type>
            <size>20512</size>
            <attacher name="Andre Loureiro (IRC: loureiro)">andre.vl</attacher>
            
              <data encoding="base64">RnJvbSAwMTg5MGYxYWE1MWJiNzZhOTc2YjJlZDFhNGExNWNjNTYyZmFkODhhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZSBMb3VyZWlybyA8YW5kcmUudmxAc2Ftc3VuZy5jb20+
CkRhdGU6IE1vbiwgMTQgT2N0IDIwMTMgMTU6Mzk6MDggLTA0MDAKU3ViamVjdDogW1BBVENIXSBN
b3ZlIHNldFZhbHVlRm9yVXNlciB0byBJbnRlcm5hbHMKIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NDM5OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpTb3Vy
Y2UvV2ViQ29yZToKCk5vIG5ldyB0ZXN0cyAoT09QUyEpLgoKKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CihXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFZhbHVlRm9yVXNlcik6CiogdGVzdGluZy9JbnRl
cm5hbHMuaDoKKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CgpTb3VyY2UvV2ViS2l0L2VmbDoKCiog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKClNvdXJjZS9XZWJLaXQvZ3RrOgoKKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgoqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgoKVG9vbHM6CgoqIER1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuY3BwOgooVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKToKKiBEdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmg6CiogRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwu
Y3BwOgoqIER1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcDoKKiBEdW1wUmVuZGVy
VHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKiBEdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5l
cldpbi5jcHA6CiogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbDoKKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwOgoqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgoKTGF5
b3V0VGVzdHM6CgoqIGZhc3QvZm9ybXMvb25jaGFuZ2Utc2V0dmFsdWVmb3J1c2VyLmh0bWw6Ci0t
LQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
OSArKysrKysrKysKIC4uLi9mYXN0L2Zvcm1zL29uY2hhbmdlLXNldHZhbHVlZm9ydXNlci5odG1s
ICAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAxNCArKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgICAgICAgICAgICAgICB8ICA5ICsrKysrKysrKwogU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaCAgICAgICAgICAgICAgICAgfCAgMSArCiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwgICAgICAgICAgICAgICB8ICAyICsrCiBTb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrKysrKysK
IC4uLi9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwICAgIHwgMTMg
LS0tLS0tLS0tLS0tCiAuLi4vZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbC5oICB8ICAxIC0KIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgIHwgMTAgKysrKysrKysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0ay5jcHAgICAgfCAxNiAtLS0tLS0tLS0tLS0tLS0KIC4uLi9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmggIHwgIDEgLQogVG9vbHMvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxOCArKysrKysrKysrKysr
KysrKwogVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgICAgICAgICAgICAgICAg
fCAxNiAtLS0tLS0tLS0tLS0tLS0KIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaCAg
ICAgICAgICAgICAgICAgIHwgIDEgLQogVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5u
ZXJFZmwuY3BwICAgICAgICAgfCAgNSAtLS0tLQogVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rl
c3RSdW5uZXJHdGsuY3BwICAgICAgICAgfCAgNSAtLS0tLQogVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1Rlc3RSdW5uZXJNYWMubW0gICAgICAgICAgfCAxMCAtLS0tLS0tLS0tCiBUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAgICAgICAgICB8IDIzIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIC4uLi9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCAg
ICAgICAgIHwgIDIgLS0KIC4uLi9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwIHwgIDkgLS0tLS0tLS0tCiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaCB8ICAyIC0tCiAyMiBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRp
b25zKCspLCAxMDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM0NzQ0ZGIuLjY5MzU1YzMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMC0xNCAgQW5kcmUgTG91cmVpcm8gIDxhbmRyZS52bEBz
YW1zdW5nLmNvbT4KKworICAgICAgICBNb3ZlIHNldFZhbHVlRm9yVXNlciB0byBJbnRlcm5hbHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Mzk4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zv
cm1zL29uY2hhbmdlLXNldHZhbHVlZm9ydXNlci5odG1sOgorCiAyMDEzLTEwLTE0ICBHeXV5b3Vu
ZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4g
RUZMIEdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvb25jaGFu
Z2Utc2V0dmFsdWVmb3J1c2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29uY2hhbmdl
LXNldHZhbHVlZm9ydXNlci5odG1sCmluZGV4IDc1ODM3ZmIuLjk2NmVjNzUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvb25jaGFuZ2Utc2V0dmFsdWVmb3J1c2VyLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbmNoYW5nZS1zZXR2YWx1ZWZvcnVzZXIuaHRtbApA
QCAtMTUsOCArMTUsOCBAQAogICAgICAgICB9CiAKICAgICAgICAgdGYuZm9jdXMoKTsKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFZh
bHVlRm9yVXNlcih0ZiwgJ0hlbGxvIScpOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykg
eworICAgICAgICAgICAgaW50ZXJuYWxzLnNldFZhbHVlRm9yVXNlcih0ZiwgJ0hlbGxvIScpOwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gU2hvdWxkIG5vdCBmaXJlIHRoZSBldmVudCB1bnRpbCBm
b2N1cyBpcyBsb3N0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDkyOTVmZDYuLmQwMTVjOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxMy0xMC0xNCAgQW5kcmUgTG91cmVpcm8gIDxhbmRyZS52bEBz
YW1zdW5nLmNvbT4KKworICAgICAgICBNb3ZlIHNldFZhbHVlRm9yVXNlciB0byBJbnRlcm5hbHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Mzk4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFZhbHVlRm9yVXNlcik6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTMt
MTAtMTQgIEFydmlkIE5pbHNzb24gIDxhbmlsc3NvbkBibGFja2JlcnJ5LmNvbT4KIAogICAgICAg
ICBEb24ndCBjcmFzaCBhZnRlciBPcGVuR0wgcm9idXN0bmVzcyByZXNldApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDVmZGY2ODMuLjA0M2RmYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIwODksNCArMjA4OSwxMyBAQCBib29sIEludGVybmFs
czo6aXNQbHVnaW5VbmF2YWlsYWJpbGl0eUluZGljYXRvck9ic2N1cmVkKEVsZW1lbnQqIGVsZW1l
bnQsIEV4Y2VwdAogICAgIHJldHVybiBlbWJlZC0+aXNSZXBsYWNlbWVudE9ic2N1cmVkKCk7CiB9
CiAKK3ZvaWQgSW50ZXJuYWxzOjpzZXRWYWx1ZUZvclVzZXIoRWxlbWVudCogZWxlbWVudCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFlbGVtZW50
IHx8ICFlbGVtZW50LT50b0lucHV0RWxlbWVudCgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9B
Q0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVsZW1lbnQtPnRvSW5wdXRF
bGVtZW50KCktPnNldFZhbHVlRm9yVXNlcih2YWx1ZSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCmluZGV4IDkwYWFhYjEuLmYwMWMwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaApAQCAtMzE4LDYgKzMxOCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgYm9v
bCBpc1BsdWdpblVuYXZhaWxhYmlsaXR5SW5kaWNhdG9yT2JzY3VyZWQoRWxlbWVudCosIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldFZhbHVlRm9yVXNlcihFbGVtZW50KiwgY29uc3QgU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFs
cyhEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGJhYTQx
YzUuLjgzNTg5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTI3Miw0
ICsyNzIsNiBAQAogICAgIFtSYWlzZXNFeGNlcHRpb25dIGJvb2xlYW4gaXNQbHVnaW5VbmF2YWls
YWJpbGl0eUluZGljYXRvck9ic2N1cmVkKEVsZW1lbnQgZWxlbWVudCk7CiAKICAgICBbUmFpc2Vz
RXhjZXB0aW9uXSBDbGllbnRSZWN0IHNlbGVjdGlvbkJvdW5kcygpOworCisgICAgW1JhaXNlc0V4
Y2VwdGlvbl0gdm9pZCBzZXRWYWx1ZUZvclVzZXIoRWxlbWVudCBpbnB1dEVsZW1lbnQsIERPTVN0
cmluZyB2YWx1ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDczOTAwZDUuLjA3NjQzMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMC0xNCAgQW5kcmUgTG91cmVp
cm8gIDxhbmRyZS52bEBzYW1zdW5nLmNvbT4KKworICAgICAgICBNb3ZlIHNldFZhbHVlRm9yVXNl
ciB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg0Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgorCiAyMDEz
LTEwLTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ29uc29saWRh
dGUgZmluZFN0cmluZyBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCmluZGV4IDlj
NjhjOTEuLmYyNjk2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApAQCAtMjMyLDE5ICsy
MzIsNiBAQCBjb25zdCBXZWJDb3JlOjpVUkwgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpwcm92
aXNpb25hbFVSTChjb25zdCBFdmFzX09iamVjdCogZQogICAgIHJldHVybiBwcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyLT51cmwoKTsKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIHZhbHVlKQotewotICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0g
dG9KUyhjb250ZXh0KTsKLSAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50ID0gV2ViQ29yZTo6
dG9FbGVtZW50KHRvSlMoZXhlYywgbm9kZU9iamVjdCkpOwotICAgIGlmICghZWxlbWVudCkKLSAg
ICAgICAgcmV0dXJuOwotICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVu
dCA9IGVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgaWYgKCFpbnB1dEVsZW1lbnQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlucHV0RWxlbWVudC0+c2V0VmFsdWVGb3JVc2VyKHZhbHVl
KTsKLX0KLQogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldERlZmVyc0xvYWRpbmco
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgZGVmZXJzKQogewogICAgIERSVF9TVVBQUlRfUEFH
RV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmggYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaAppbmRl
eCA1OGNkNDgzLi44M2RjZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaApAQCAtNjgsNyArNjgs
NiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBzdWl0YWJsZURSVEZyYW1lTmFtZShjb25z
dCBFdmFzX09iamVjdCogZXdrRnJhbWUpOwogICAgIHN0YXRpYyBjb25zdCBXZWJDb3JlOjpVUkwg
cHJvdmlzaW9uYWxVUkwoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKICAgICBzdGF0aWMg
U3RyaW5nIGxheWVyVHJlZUFzVGV4dChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpOwotICAg
IHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgbm9k
ZU9iamVjdCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgc2V0RGVmZXJz
TG9hZGluZyhFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBkZWZlcnMpOwogICAgIHN0YXRpYyB2
b2lkIHNldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5nKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBib29sIGxvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVm
ZXJlbmNlcyk7CiAgICAgc3RhdGljIHZvaWQgc2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZShFdmFz
X09iamVjdCogZXdrVmlldywgaW50IHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGRjMTE1MTIu
LjkxZmVlZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMC0xNCAg
QW5kcmUgTG91cmVpcm8gIDxhbmRyZS52bEBzYW1zdW5nLmNvbT4KKworICAgICAgICBNb3ZlIHNl
dFZhbHVlRm9yVXNlciB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg0Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGsuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5oOgorCiAyMDEzLTEwLTA5ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bWFyaW8ucHJhZGFAc2Ft
c3VuZy5jb20+CiAKICAgICAgICAgW0FUS10gSW1wbGVtZW50IG5ldyBBUEkgaW4gQXRrVGV4dDog
YXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAK
aW5kZXggYzk4ZmQwNi4uMjMwNTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBAIC00
NzYsMjIgKzQ3Niw2IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpmaW5kU3RyaW5n
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiB0CiAgICAgcmV0dXJuIGNvcmUo
d2ViVmlldyktPmZpbmRTdHJpbmcoU3RyaW5nOjpmcm9tVVRGOCh0YXJnZXRTdHJpbmcpLCBmaW5k
T3B0aW9ucyk7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRWYWx1ZUZv
clVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgSlNTdHJp
bmdSZWYgdmFsdWUpCi17Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQp
OwotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQodG9KUyhleGVjLCBub2RlT2JqZWN0
KSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0gICAgSFRNTElucHV0RWxl
bWVudCogaW5wdXRFbGVtZW50ID0gZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICBpZiAo
IWlucHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2l6ZV90IGJ1ZmZlclNpemUg
PSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUodmFsdWUpOwotICAgIEdPd25QdHI8
Z2NoYXI+IHZhbHVlQnVmZmVyKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6
ZSkpKTsKLSAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKHZhbHVlLCB2YWx1ZUJ1ZmZlci5nZXQo
KSwgYnVmZmVyU2l6ZSk7Ci0gICAgaW5wdXRFbGVtZW50LT5zZXRWYWx1ZUZvclVzZXIoU3RyaW5n
Ojpmcm9tVVRGOCh2YWx1ZUJ1ZmZlci5nZXQoKSkpOwotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6cmVjdGFuZ2xlRm9yU2VsZWN0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwg
Y2Fpcm9fcmVjdGFuZ2xlX2ludF90KiByZWN0YW5nbGUpCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUoZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAppbmRleCA0ZmQ2MjU1Li44NmI3
ZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaApAQCAtNjYsNyArNjYsNiBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEF0a09iamVjdCogZ2V0Rm9jdXNlZEFjY2Vzc2libGVFbGVtZW50KFdlYktpdFdl
YkZyYW1lKik7CiAgICAgc3RhdGljIEF0a09iamVjdCogZ2V0Um9vdEFjY2Vzc2libGVFbGVtZW50
KFdlYktpdFdlYkZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgbGF5b3V0RnJhbWUoV2ViS2l0V2Vi
RnJhbWUqKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmLCBK
U1ZhbHVlUmVmLCBKU1N0cmluZ1JlZik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQ2xvc2UoV2Vi
S2l0V2ViRnJhbWUqKTsKIAogICAgIC8vIFdlYktpdFdlYlZpZXcKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlN2FkYTI5Li42MTE3NzNkIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTMtMTAtMTQgIEFuZHJlIExvdXJlaXJvICA8YW5kcmUudmxAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgTW92ZSBzZXRWYWx1ZUZvclVzZXIgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDM5OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVz
dFJ1bm5lci5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3Rr
L1Rlc3RSdW5uZXJHdGsuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNw
cDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmg6CisKIDIwMTMtMTAtMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIERlcHJlY2F0ZSBvciByZW1vdmUgZGVsZXRlQWxsVmFsdWVzIGZ1bmN0
aW9uczsgdGhlcmUgYXJlIG9ubHkgYSBmZXcgY2FsbCBzaXRlcyBsZWZ0CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuY3BwCmluZGV4IDVjMGQwM2MuLjQ4OWU1MmEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuY3BwCkBAIC0xMzc3LDIxICsxMzc3LDYgQEAgc3RhdGljIEpTVmFsdWVSZWYg
c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamUKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKLXN0
YXRpYyBKU1ZhbHVlUmVmIHNldFZhbHVlRm9yVXNlckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKLXsKLSAgICAvLyBIYXMgbWFjIGltcGxlbWVudGF0aW9uCi0gICAgaWYgKGFy
Z3VtZW50Q291bnQgIT0gMikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOwotCi0gICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHZhbHVlKEFkb3B0LCBKU1Zh
bHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7Ci0gICAg
QVNTRVJUKCEqZXhjZXB0aW9uKTsKLQotICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0
aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAg
ICBjb250cm9sbGVyLT5zZXRWYWx1ZUZvclVzZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCB2YWx1
ZS5nZXQoKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci19
Ci0KIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFZpZXdNb2RlTWVkaWFGZWF0dXJlQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRp
b24KQEAgLTIxNjgsNyArMjE1Myw2IEBAIEpTU3RhdGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0
YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNldFVzZURhc2hib2FyZENvbXBhdGliaWxpdHlN
b2RlIiwgc2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGVDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQiLCBzZXRVc2VyU3R5bGVTaGVldEVu
YWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRVc2VyU3R5bGVTaGVldExvY2F0
aW9uIiwgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAg
IHsgInNldFZhbHVlRm9yVXNlciIsIHNldFZhbHVlRm9yVXNlckNhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgInNldFZpZXdNb2RlTWVkaWFGZWF0dXJlIiwgc2V0Vmlld01vZGVNZWRpYUZlYXR1
cmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRXZWJWaWV3RWRpdGFibGUiLCBzZXRX
ZWJWaWV3RWRpdGFibGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRXaWxsU2VuZFJl
cXVlc3RDbGVhckhlYWRlciIsIHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAppbmRleCA4Y2RhY2Q5Li4zMjE2MDFl
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCkBAIC0xMTQsNyArMTE0LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUoYm9vbCBmbGFnKTsK
ICAgICB2b2lkIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChib29sIGZsYWcpOwogICAgIHZvaWQg
c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKLSAgICB2b2lkIHNl
dFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgSlNTdHJp
bmdSZWYgdmFsdWUpOwogICAgIHZvaWQgc2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoSlNTdHJpbmdS
ZWYpOwogICAgIHZvaWQgc2V0WFNTQXVkaXRvckVuYWJsZWQoYm9vbCBmbGFnKTsKICAgICB2b2lk
IHNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2VmbC9UZXN0UnVubmVyRWZsLmNwcAppbmRleCAwNzQ2ZTUyLi5hYTYxZDViIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCkBAIC0yNDQsMTEgKzI0NCw2IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBw
YXRoKQogICAgICAgICBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQodHJ1ZSk7CiB9CiAKLXZvaWQg
VGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVl
UmVmIG5vZGVPYmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKQotewotICAgIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbDo6c2V0VmFsdWVGb3JVc2VyKGNvbnRleHQsIG5vZGVPYmplY3QsIHZhbHVlLT5z
dHJpbmcoKSk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUo
SlNTdHJpbmdSZWYgbW9kZSkKIHsKICNpZiBFTkFCTEUoVklFV19NT0RFX0NTU19NRURJQSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcAppbmRleCAyNjVmYjVjLi4w
ODc2OTBlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0
ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCkBA
IC0yNzEsMTEgKzI3MSw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRMb2Nh
dGlvbihKU1N0cmluZ1JlZiBwYXRoKQogICAgICAgICBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQo
dHJ1ZSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKQotewot
ICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0VmFsdWVGb3JVc2VyKGNvbnRleHQsIG5v
ZGVPYmplY3QsIHZhbHVlKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRWaWV3TW9kZU1lZGlh
RmVhdHVyZShKU1N0cmluZ1JlZiBtb2RlKQogewogICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSB3
ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCBhNDZkNDI4Li43YTlhOGY2IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtNTkyLDE2ICs1OTIsNiBA
QCB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYg
cGF0aCkKICAgICBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHNldFVzZXJT
dHlsZVNoZWV0TG9jYXRpb246dXJsXTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRWYWx1ZUZv
clVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgSlNTdHJp
bmdSZWYgdmFsdWUpCi17Ci0gICAgRE9NRWxlbWVudCAqZWxlbWVudCA9IFtET01FbGVtZW50IF9E
T01FbGVtZW50RnJvbUpTQ29udGV4dDpjb250ZXh0IHZhbHVlOm5vZGVPYmplY3RdOwotICAgIGlm
ICghZWxlbWVudCB8fCAhW2VsZW1lbnQgaXNLaW5kT2ZDbGFzczpbRE9NSFRNTElucHV0RWxlbWVu
dCBjbGFzc11dKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHZhbHVlQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHZhbHVlKSk7Ci0gICAgWyhET01IVE1MSW5wdXRFbGVtZW50ICopZWxlbWVudCBzZXRWYWx1
ZUZvclVzZXI6KE5TU3RyaW5nICopdmFsdWVDRi5nZXQoKV07Ci19Ci0KIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoSlNTdHJpbmdSZWYgbW9kZSkKIHsKICAgICAvLyBG
SVhNRTogaW1wbGVtZW50CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVz
dFJ1bm5lcldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5j
cHAKaW5kZXggM2ZiMWM1YS4uM2ZjNDYyNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9U
ZXN0UnVubmVyV2luLmNwcApAQCAtNjY3LDI5ICs2NjcsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNl
dFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYganNVUkwpCiAgICAgU3lzRnJlZVN0
cmluZyhyZXN1bHRQYXRoQlNUUik7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JV
c2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGVsZW1lbnQsIEpTU3RyaW5nUmVm
IHZhbHVlKQotewotICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKLSAgICBpZiAoRkFJTEVE
KGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENPTVB0
cjxJV2ViVmlld1ByaXZhdGU+IHdlYlZpZXdQcml2YXRlKFF1ZXJ5LCB3ZWJWaWV3KTsKLSAgICBp
ZiAoIXdlYlZpZXdQcml2YXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDT01QdHI8SURPTUVs
ZW1lbnQ+IGRvbUVsZW1lbnQ7Ci0gICAgaWYgKEZBSUxFRCh3ZWJWaWV3UHJpdmF0ZS0+ZWxlbWVu
dEZyb21KUyhjb250ZXh0LCBlbGVtZW50LCAmZG9tRWxlbWVudCkpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBDT01QdHI8SURPTUhUTUxJbnB1dEVsZW1lbnQ+IGRvbUlucHV0RWxlbWVudDsKLSAg
ICBpZiAoRkFJTEVEKGRvbUVsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NSFRNTElucHV0
RWxlbWVudCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZkb21JbnB1dEVsZW1lbnQpKSkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIF9ic3RyX3QgdmFsdWVCU1RSKEpTU3RyaW5nQ29weUJTVFIo
dmFsdWUpLCBmYWxzZSk7Ci0KLSAgICBkb21JbnB1dEVsZW1lbnQtPnNldFZhbHVlRm9yVXNlcih2
YWx1ZUJTVFIpOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNldFZpZXdNb2RlTWVkaWFGZWF0dXJl
KEpTU3RyaW5nUmVmIG1vZGUpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwKaW5kZXggZTI2MmIyNS4uMmJjMDRhOCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsCkBAIC05Miw4ICs5Miw2IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICAv
LyBQcmludGluZwogICAgIGJvb2xlYW4gaXNQYWdlQm94VmlzaWJsZShpbnQgcGFnZUluZGV4KTsK
IAotICAgIFtQYXNzQ29udGV4dF0gdm9pZCBzZXRWYWx1ZUZvclVzZXIob2JqZWN0IGVsZW1lbnQs
IERPTVN0cmluZyB2YWx1ZSk7Ci0KICAgICAvLyBVc2VyQ29udGVudCB0ZXN0aW5nLgogICAgIHZv
aWQgYWRkVXNlclNjcmlwdChET01TdHJpbmcgc291cmNlLCBib29sZWFuIHJ1bkF0U3RhcnQsIGJv
b2xlYW4gYWxsRnJhbWVzKTsKICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KERPTVN0cmluZyBz
b3VyY2UsIGJvb2xlYW4gYWxsRnJhbWVzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDNmMmQwMzguLjk3MjkyNGMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcApAQCAtMzY3LDE1ICszNjcsNiBAQCBib29sIFRlc3RSdW5uZXI6OmlzUGFnZUJv
eFZpc2libGUoaW50IHBhZ2VJbmRleCkKICAgICByZXR1cm4gV0tCdW5kbGVJc1BhZ2VCb3hWaXNp
YmxlKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgbWFpbkZyYW1lLCBwYWdlSW5k
ZXgpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiBlbGVtZW50LCBKU1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICBp
ZiAoIWVsZW1lbnQgfHwgIUpTVmFsdWVJc09iamVjdChjb250ZXh0LCBlbGVtZW50KSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVOb2RlSGFuZGxlUmVmPiBub2Rl
SGFuZGxlKEFkb3B0V0ssIFdLQnVuZGxlTm9kZUhhbmRsZUNyZWF0ZShjb250ZXh0LCBjb25zdF9j
YXN0PEpTT2JqZWN0UmVmPihlbGVtZW50KSkpOwotICAgIFdLQnVuZGxlTm9kZUhhbmRsZVNldEhU
TUxJbnB1dEVsZW1lbnRWYWx1ZUZvclVzZXIobm9kZUhhbmRsZS5nZXQoKSwgdG9XSyh2YWx1ZSku
Z2V0KCkpOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNldEF1ZGlvUmVzdWx0KEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVm
PiBhdWRpb0RhdGEoQWRvcHRXSywgV0tCdW5kbGVDcmVhdGVXS0RhdGFGcm9tVUludDhBcnJheShJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIGNvbnRleHQsIGRhdGEpKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5k
ZXggMzhjZWY2Yi4uNzFlN2M3NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTE1OCw4ICsxNTgsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKEpTU3RyaW5nUmVmKTsKICAgICB2b2lk
IHNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQoSlNTdHJpbmdSZWYpOwogCi0gICAgdm9pZCBzZXRW
YWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmIGVsZW1lbnQsIEpTU3RyaW5nUmVm
IHZhbHVlKTsKLQogICAgIC8vIEF1ZGlvIHRlc3RpbmcuCiAgICAgdm9pZCBzZXRBdWRpb1Jlc3Vs
dChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgZGF0YSk7CiAKLS0gCjEuOC4xLjIKCg==
</data>
<flag name="review"
          id="236695"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="236698"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214261</attachid>
            <date>2013-10-15 08:31:01 -0700</date>
            <delta_ts>2013-10-16 06:59:22 -0700</delta_ts>
            <desc>WIP Patch for EWS test</desc>
            <filename>0001-Move-setValueForUser-to-Internals.patch</filename>
            <type>text/plain</type>
            <size>21555</size>
            <attacher name="Andre Loureiro (IRC: loureiro)">andre.vl</attacher>
            
              <data encoding="base64">RnJvbSA5OTc5MzI4MGY2MDJmOGRiMTMzMWYyODM2MTcxM2NiOTNjYWRlZmRkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZSBMb3VyZWlybyA8YW5kcmUudmxAc2Ftc3VuZy5jb20+
CkRhdGU6IFR1ZSwgMTUgT2N0IDIwMTMgMTE6MjU6MjIgLTA0MDAKU3ViamVjdDogW1BBVENIXSBN
b3ZlIHNldFZhbHVlRm9yVXNlciB0byBJbnRlcm5hbHMKIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NDM5OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpTb3Vy
Y2UvV2ViQ29yZToKCk5vIG5ldyB0ZXN0cyAoT09QUyEpLgoKKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CihXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFZhbHVlRm9yVXNlcik6CiogdGVzdGluZy9JbnRl
cm5hbHMuaDoKKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CgpTb3VyY2UvV2ViS2l0L2VmbDoKCiog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKClNvdXJjZS9XZWJLaXQvZ3RrOgoKKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgoqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgoKVG9vbHM6CgoqIER1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuY3BwOgooVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKToKKiBEdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmg6CiogRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwu
Y3BwOgoqIER1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcDoKKiBEdW1wUmVuZGVy
VHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKiBEdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5l
cldpbi5jcHA6CiogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbDoKKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwOgoqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgoKTGF5
b3V0VGVzdHM6CgoqIGZhc3QvZm9ybXMvb25jaGFuZ2Utc2V0dmFsdWVmb3J1c2VyLmh0bWw6Ci0t
LQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
OSArKysrKysrKwogLi4uL2Zhc3QvZm9ybXMvb25jaGFuZ2Utc2V0dmFsdWVmb3J1c2VyLmh0bWwg
ICAgICAgfCAgNCArKy0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluICAgICAgICAgICAgICAgICAgICAgIHwgIDEgLQogU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwICAgICAgICAgICAgICAgfCAgOSArKysrKysrKwogU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCAgICAgICAgICAgICAgICAgfCAgMSArCiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgICAgICAgICAgICAgICB8ICAyICsrCiBT
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8IDEwICsr
KysrKysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAg
ICAgfCAxMyAtLS0tLS0tLS0tLQogLi4uL2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmwuaCAgfCAgMSAtCiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICB8IDEwICsrKysrKysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAgICAgfCAxNiAtLS0tLS0tLS0tLS0tLQogLi4uL2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaCAgfCAgMSAtCiBUb29scy9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE4ICsrKysrKysr
KysrKysrKysKIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwICAgICAgICAgICAg
ICAgIHwgMTYgLS0tLS0tLS0tLS0tLS0KIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
aCAgICAgICAgICAgICAgICAgIHwgIDEgLQogVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RS
dW5uZXJFZmwuY3BwICAgICAgICAgfCAgNSAtLS0tLQogVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L1Rlc3RSdW5uZXJHdGsuY3BwICAgICAgICAgfCAgNSAtLS0tLQogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0gICAgICAgICAgfCAxMCAtLS0tLS0tLS0KIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcCAgICAgICAgIHwgMjMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIC4uLi9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCAg
ICAgICAgIHwgIDIgLS0KIC4uLi9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwIHwgIDkgLS0tLS0tLS0KIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oIHwgIDIgLS0KIDIzIGZpbGVzIGNoYW5nZWQsIDg2IGluc2VydGlv
bnMoKyksIDEwNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzQ3NDRkYi4uNjkzNTVjMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEyIEBACisyMDEzLTEwLTE0ICBBbmRyZSBMb3VyZWlybyAgPGFuZHJlLnZsQHNh
bXN1bmcuY29tPgorCisgICAgICAgIE1vdmUgc2V0VmFsdWVGb3JVc2VyIHRvIEludGVybmFscwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzOTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9y
bXMvb25jaGFuZ2Utc2V0dmFsdWVmb3J1c2VyLmh0bWw6CisKIDIwMTMtMTAtMTQgIEd5dXlvdW5n
IEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBF
RkwgR2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbmNoYW5n
ZS1zZXR2YWx1ZWZvcnVzZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvb25jaGFuZ2Ut
c2V0dmFsdWVmb3J1c2VyLmh0bWwKaW5kZXggNzU4MzdmYi4uOTY2ZWM3NSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbmNoYW5nZS1zZXR2YWx1ZWZvcnVzZXIuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29uY2hhbmdlLXNldHZhbHVlZm9ydXNlci5odG1sCkBA
IC0xNSw4ICsxNSw4IEBACiAgICAgICAgIH0KIAogICAgICAgICB0Zi5mb2N1cygpOwotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0VmFs
dWVGb3JVc2VyKHRmLCAnSGVsbG8hJyk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7
CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0VmFsdWVGb3JVc2VyKHRmLCAnSGVsbG8hJyk7CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBTaG91bGQgbm90IGZpcmUgdGhlIGV2ZW50IHVudGlsIGZv
Y3VzIGlzIGxvc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTI5NWZkNi4uNjQ2OGRmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI4IEBACisyMDEzLTEwLTE1ICBBbmRyZSBMb3VyZWlybyAgPGFuZHJlLnZsQHNh
bXN1bmcuY29tPgorCisgICAgICAgIE1vdmUgc2V0VmFsdWVGb3JVc2VyIHRvIEludGVybmFscwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzOTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorCisyMDEzLTEwLTE0ICBB
bmRyZSBMb3VyZWlybyAgPGFuZHJlLnZsQHNhbXN1bmcuY29tPgorCisgICAgICAgIE1vdmUgc2V0
VmFsdWVGb3JVc2VyIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODQzOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0VmFsdWVG
b3JVc2VyKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMy0xMC0xNCAgQXJ2aWQgTmlsc3NvbiAgPGFuaWxzc29u
QGJsYWNrYmVycnkuY29tPgogCiAgICAgICAgIERvbid0IGNyYXNoIGFmdGVyIE9wZW5HTCByb2J1
c3RuZXNzIHJlc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGE2YWRjOWIuLjMyM2QyNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCkBAIC01MzQsNyArNTM0LDYgQEAgX19aTjdXZWJDb3JlMTZGb250
UGxhdGZvcm1EYXRhRDFFdgogX19aTjdXZWJDb3JlMTZGcmFtZUxvYWRSZXF1ZXN0QzFFUE5TXzVG
cmFtZUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMTRTdWJzdGl0dXRlRGF0YUUKIF9fWk43
V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDEzc2V0QXV0b2ZpbGxlZEViCiBfX1pON1dlYkNvcmUx
NkhUTUxJbnB1dEVsZW1lbnQxNXNldEVkaXRpbmdWYWx1ZUVSS04zV1RGNlN0cmluZ0UKLV9fWk43
V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDE1c2V0VmFsdWVGb3JVc2VyRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50MTdzZXRTdWdnZXN0ZWRWYWx1ZUVSS04z
V1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDhzZXRWYWx1ZUVSS04z
V1RGNlN0cmluZ0VOU18yMlRleHRGaWVsZEV2ZW50QmVoYXZpb3JFCiBfX1pON1dlYkNvcmUxNklj
b25EYXRhYmFzZUJhc2UyOHN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkxFUktOM1dURjZTdHJp
bmdFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNWZkZjY4My4uMDQzZGZj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjA4OSw0ICsyMDg5LDEz
IEBAIGJvb2wgSW50ZXJuYWxzOjppc1BsdWdpblVuYXZhaWxhYmlsaXR5SW5kaWNhdG9yT2JzY3Vy
ZWQoRWxlbWVudCogZWxlbWVudCwgRXhjZXB0CiAgICAgcmV0dXJuIGVtYmVkLT5pc1JlcGxhY2Vt
ZW50T2JzY3VyZWQoKTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OnNldFZhbHVlRm9yVXNlcihFbGVt
ZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCkpIHsKKyAgICAg
ICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
ZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKS0+c2V0VmFsdWVGb3JVc2VyKHZhbHVlKTsKK30KKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggOTBhYWFiMS4uZjAxYzAxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0zMTgsNiArMzE4LDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICBib29sIGlzUGx1Z2luVW5hdmFpbGFiaWxpdHlJbmRpY2F0b3JPYnNjdXJl
ZChFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0VmFsdWVGb3JVc2VyKEVs
ZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKaW5kZXggYmFhNDFjNS4uODM1ODk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbApAQCAtMjcyLDQgKzI3Miw2IEBACiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9vbGVh
biBpc1BsdWdpblVuYXZhaWxhYmlsaXR5SW5kaWNhdG9yT2JzY3VyZWQoRWxlbWVudCBlbGVtZW50
KTsKIAogICAgIFtSYWlzZXNFeGNlcHRpb25dIENsaWVudFJlY3Qgc2VsZWN0aW9uQm91bmRzKCk7
CisKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldFZhbHVlRm9yVXNlcihFbGVtZW50IGlu
cHV0RWxlbWVudCwgRE9NU3RyaW5nIHZhbHVlKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggNzM5
MDBkNS4uMDc2NDMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTEw
LTE0ICBBbmRyZSBMb3VyZWlybyAgPGFuZHJlLnZsQHNhbXN1bmcuY29tPgorCisgICAgICAgIE1v
dmUgc2V0VmFsdWVGb3JVc2VyIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsLmg6CisKIDIwMTMtMTAtMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBDb25zb2xpZGF0ZSBmaW5kU3RyaW5nIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbC5jcHAKaW5kZXggOWM2OGM5MS4uZjI2OTY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
Y3BwCkBAIC0yMzIsMTkgKzIzMiw2IEBAIGNvbnN0IFdlYkNvcmU6OlVSTCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OnByb3Zpc2lvbmFsVVJMKGNvbnN0IEV2YXNfT2JqZWN0KiBlCiAgICAgcmV0
dXJuIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnVybCgpOwogfQogCi12b2lkIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbDo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U1ZhbHVlUmVmIG5vZGVPYmplY3QsIGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgSlNDOjpF
eGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOwotICAgIFdlYkNvcmU6OkVsZW1lbnQqIGVs
ZW1lbnQgPSBXZWJDb3JlOjp0b0VsZW1lbnQodG9KUyhleGVjLCBub2RlT2JqZWN0KSk7Ci0gICAg
aWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0gICAgV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudCogaW5wdXRFbGVtZW50ID0gZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICBpZiAo
IWlucHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW5wdXRFbGVtZW50LT5zZXRW
YWx1ZUZvclVzZXIodmFsdWUpOwotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6
c2V0RGVmZXJzTG9hZGluZyhFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBkZWZlcnMpCiB7CiAg
ICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgcGFnZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbC5oCmluZGV4IDU4Y2Q0ODMuLjgzZGNlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5oCkBAIC02OCw3ICs2OCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHN1aXRhYmxl
RFJURnJhbWVOYW1lKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiAgICAgc3RhdGljIGNv
bnN0IFdlYkNvcmU6OlVSTCBwcm92aXNpb25hbFVSTChjb25zdCBFdmFzX09iamVjdCogZXdrRnJh
bWUpOwogICAgIHN0YXRpYyBTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tGcmFtZSk7Ci0gICAgc3RhdGljIHZvaWQgc2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJl
ZiwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKICAgICBzdGF0
aWMgdm9pZCBzZXREZWZlcnNMb2FkaW5nKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGRlZmVy
cyk7CiAgICAgc3RhdGljIHZvaWQgc2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGlu
Z1NldHRpbmcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgbG9hZHNTaXRlSWNvbnNJZ25vcmlu
Z0ltYWdlTG9hZGluZ1ByZWZlcmVuY2VzKTsKICAgICBzdGF0aWMgdm9pZCBzZXRNaW5pbXVtTG9n
aWNhbEZvbnRTaXplKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgc2l6ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKaW5kZXggZGMxMTUxMi4uOTFmZWVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDEzLTEwLTE0ICBBbmRyZSBMb3VyZWlybyAgPGFuZHJlLnZsQHNhbXN1bmcuY29tPgor
CisgICAgICAgIE1vdmUgc2V0VmFsdWVGb3JVc2VyIHRvIEludGVybmFscworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrLmg6CisKIDIwMTMtMTAtMDkgIE1hcmlvIFNhbmNoZXogUHJhZGEg
IDxtYXJpby5wcmFkYUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbQVRLXSBJbXBsZW1lbnQgbmV3
IEFQSSBpbiBBdGtUZXh0OiBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrLmNwcAppbmRleCBjOThmZDA2Li4yMzA1ODIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5jcHAKQEAgLTQ3NiwyMiArNDc2LDYgQEAgYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OmZpbmRTdHJpbmcoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIHQK
ICAgICByZXR1cm4gY29yZSh3ZWJWaWV3KS0+ZmluZFN0cmluZyhTdHJpbmc6OmZyb21VVEY4KHRh
cmdldFN0cmluZyksIGZpbmRPcHRpb25zKTsKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBu
b2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICBKU0M6OkV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoY29udGV4dCk7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudCh0b0pT
KGV4ZWMsIG5vZGVPYmplY3QpKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybjsK
LSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlbGVtZW50LT50b0lucHV0RWxl
bWVudCgpOwotICAgIGlmICghaW5wdXRFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBz
aXplX3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZSh2YWx1
ZSk7Ci0gICAgR093blB0cjxnY2hhcj4gdmFsdWVCdWZmZXIoc3RhdGljX2Nhc3Q8Z2NoYXIqPihn
X21hbGxvYyhidWZmZXJTaXplKSkpOwotICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcodmFsdWUs
IHZhbHVlQnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKLSAgICBpbnB1dEVsZW1lbnQtPnNldFZh
bHVlRm9yVXNlcihTdHJpbmc6OmZyb21VVEY4KHZhbHVlQnVmZmVyLmdldCgpKSk7Ci19Ci0KIHZv
aWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpyZWN0YW5nbGVGb3JTZWxlY3Rpb24oV2ViS2l0
V2ViRnJhbWUqIGZyYW1lLCBjYWlyb19yZWN0YW5nbGVfaW50X3QqIHJlY3RhbmdsZSkKIHsKICAg
ICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCmlu
ZGV4IDRmZDYyNTUuLjg2YjdmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCkBAIC02Niw3ICs2
Niw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQXRrT2JqZWN0KiBnZXRGb2N1c2VkQWNjZXNzaWJs
ZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgQXRrT2JqZWN0KiBnZXRSb290
QWNjZXNzaWJsZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCBsYXlv
dXRGcmFtZShXZWJLaXRXZWJGcmFtZSopOwotICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNl
cihKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIEpTU3RyaW5nUmVmKTsKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRDbG9zZShXZWJLaXRXZWJGcmFtZSopOwogCiAgICAgLy8gV2ViS2l0V2ViVmlldwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU3YWRh
MjkuLjYxMTc3M2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0xMC0xNCAgQW5kcmUgTG91cmVpcm8gIDxhbmRy
ZS52bEBzYW1zdW5nLmNvbT4KKworICAgICAgICBNb3ZlIHNldFZhbHVlRm9yVXNlciB0byBJbnRl
cm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0
Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OnN0YXRp
Y0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcDoKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHA6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2lu
L1Rlc3RSdW5uZXJXaW4uY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKwogMjAxMy0xMC0xMyAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGVwcmVjYXRlIG9yIHJlbW92ZSBkZWxl
dGVBbGxWYWx1ZXMgZnVuY3Rpb25zOyB0aGVyZSBhcmUgb25seSBhIGZldyBjYWxsIHNpdGVzIGxl
ZnQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKaW5kZXggNWMwZDAzYy4uNDg5ZTUyYSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTEzNzcsMjEgKzEzNzcsNiBAQCBz
dGF0aWMgSlNWYWx1ZVJlZiBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uQ2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZQogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYgc2V0VmFsdWVGb3JVc2VyQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQotewotICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50
YXRpb24KLSAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAyKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0KLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
dmFsdWUoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzFdLCBl
eGNlcHRpb24pKTsKLSAgICBBU1NFUlQoISpleGNlcHRpb24pOwotCi0gICAgVGVzdFJ1bm5lciog
Y29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUo
dGhpc09iamVjdCkpOwotICAgIGNvbnRyb2xsZXItPnNldFZhbHVlRm9yVXNlcihjb250ZXh0LCBh
cmd1bWVudHNbMF0sIHZhbHVlLmdldCgpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKLX0KLQogc3RhdGljIEpTVmFsdWVSZWYgc2V0Vmlld01vZGVNZWRpYUZl
YXR1cmVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24s
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFz
IG1hYyBpbXBsZW1lbnRhdGlvbgpAQCAtMjE2OCw3ICsyMTUzLDYgQEAgSlNTdGF0aWNGdW5jdGlv
biogVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAic2V0VXNlRGFzaGJv
YXJkQ29tcGF0aWJpbGl0eU1vZGUiLCBzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZCIsIHNl
dFVzZXJTdHlsZVNoZWV0RW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFVz
ZXJTdHlsZVNoZWV0TG9jYXRpb24iLCBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKLSAgICAgICAgeyAic2V0VmFsdWVGb3JVc2VyIiwgc2V0VmFsdWVGb3JVc2VyQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0Vmlld01vZGVNZWRpYUZlYXR1cmUiLCBzZXRW
aWV3TW9kZU1lZGlhRmVhdHVyZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFdlYlZp
ZXdFZGl0YWJsZSIsIHNldFdlYlZpZXdFZGl0YWJsZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyIiwgc2V0V2lsbFNlbmRSZXF1ZXN0Q2xl
YXJIZWFkZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCmluZGV4
IDhjZGFjZDkuLjMyMTYwMWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RS
dW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKQEAgLTExNCw3
ICsxMTQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5
TW9kZShib29sIGZsYWcpOwogICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGJvb2wg
ZmxhZyk7CiAgICAgdm9pZCBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBh
dGgpOwotICAgIHZvaWQgc2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBu
b2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSk7CiAgICAgdm9pZCBzZXRWaWV3TW9kZU1lZGlh
RmVhdHVyZShKU1N0cmluZ1JlZik7CiAgICAgdm9pZCBzZXRYU1NBdWRpdG9yRW5hYmxlZChib29s
IGZsYWcpOwogICAgIHZvaWQgc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGJvb2wpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCmluZGV4IDA3NDZlNTIuLmFh
NjFkNWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZs
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKQEAg
LTI0NCwxMSArMjQ0LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0
aW9uKEpTU3RyaW5nUmVmIHBhdGgpCiAgICAgICAgIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZCh0
cnVlKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgSlNTdHJpbmdSZWYgdmFsdWUpCi17Ci0g
ICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRWYWx1ZUZvclVzZXIoY29udGV4dCwgbm9k
ZU9iamVjdCwgdmFsdWUtPnN0cmluZygpKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRWaWV3
TW9kZU1lZGlhRmVhdHVyZShKU1N0cmluZ1JlZiBtb2RlKQogewogI2lmIEVOQUJMRShWSUVXX01P
REVfQ1NTX01FRElBKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RS
dW5uZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3Bw
CmluZGV4IDI2NWZiNWMuLjA4NzY5MGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9UZXN0UnVubmVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVz
dFJ1bm5lckd0ay5jcHAKQEAgLTI3MSwxMSArMjcxLDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRV
c2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpCiAgICAgICAgIHNldFVzZXJT
dHlsZVNoZWV0RW5hYmxlZCh0cnVlKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRWYWx1ZUZv
clVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgSlNTdHJp
bmdSZWYgdmFsdWUpCi17Ci0gICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRWYWx1ZUZv
clVzZXIoY29udGV4dCwgbm9kZU9iamVjdCwgdmFsdWUpOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6
OnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKEpTU3RyaW5nUmVmIG1vZGUpCiB7CiAgICAgV2ViS2l0
V2ViVmlldyogdmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IGE0NmQ0Mjgu
LjdhOWE4ZjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVy
TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCkBA
IC01OTIsMTYgKzU5Miw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRMb2Nh
dGlvbihKU1N0cmluZ1JlZiBwYXRoKQogICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVm
ZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjp1cmxdOwogfQogCi12b2lkIFRlc3RS
dW5uZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBu
b2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICBET01FbGVtZW50ICplbGVtZW50
ID0gW0RPTUVsZW1lbnQgX0RPTUVsZW1lbnRGcm9tSlNDb250ZXh0OmNvbnRleHQgdmFsdWU6bm9k
ZU9iamVjdF07Ci0gICAgaWYgKCFlbGVtZW50IHx8ICFbZWxlbWVudCBpc0tpbmRPZkNsYXNzOltE
T01IVE1MSW5wdXRFbGVtZW50IGNsYXNzXV0pCi0gICAgICAgIHJldHVybjsKLQotICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gdmFsdWVDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmco
a0NGQWxsb2NhdG9yRGVmYXVsdCwgdmFsdWUpKTsKLSAgICBbKERPTUhUTUxJbnB1dEVsZW1lbnQg
KillbGVtZW50IHNldFZhbHVlRm9yVXNlcjooTlNTdHJpbmcgKil2YWx1ZUNGLmdldCgpXTsKLX0K
LQogdm9pZCBUZXN0UnVubmVyOjpzZXRWaWV3TW9kZU1lZGlhRmVhdHVyZShKU1N0cmluZ1JlZiBt
b2RlKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9UZXN0UnVubmVyV2luLmNwcAppbmRleCAzZmIxYzVhLi4zZmM0NjI2IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCkBAIC02NjcsMjkgKzY2Nyw2IEBAIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBqc1VS
TCkKICAgICBTeXNGcmVlU3RyaW5nKHJlc3VsdFBhdGhCU1RSKTsKIH0KIAotdm9pZCBUZXN0UnVu
bmVyOjpzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZWxl
bWVudCwgSlNTdHJpbmdSZWYgdmFsdWUpCi17Ci0gICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3
OwotICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZpZXcoJndlYlZpZXcpKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZT4gd2ViVmlld1ByaXZhdGUoUXVlcnks
IHdlYlZpZXcpOwotICAgIGlmICghd2ViVmlld1ByaXZhdGUpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIENPTVB0cjxJRE9NRWxlbWVudD4gZG9tRWxlbWVudDsKLSAgICBpZiAoRkFJTEVEKHdlYlZp
ZXdQcml2YXRlLT5lbGVtZW50RnJvbUpTKGNvbnRleHQsIGVsZW1lbnQsICZkb21FbGVtZW50KSkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIENPTVB0cjxJRE9NSFRNTElucHV0RWxlbWVudD4gZG9t
SW5wdXRFbGVtZW50OwotICAgIGlmIChGQUlMRUQoZG9tRWxlbWVudC0+UXVlcnlJbnRlcmZhY2Uo
SUlEX0lET01IVE1MSW5wdXRFbGVtZW50LCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmRvbUlu
cHV0RWxlbWVudCkpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX2JzdHJfdCB2YWx1ZUJTVFIo
SlNTdHJpbmdDb3B5QlNUUih2YWx1ZSksIGZhbHNlKTsKLQotICAgIGRvbUlucHV0RWxlbWVudC0+
c2V0VmFsdWVGb3JVc2VyKHZhbHVlQlNUUik7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Vmll
d01vZGVNZWRpYUZlYXR1cmUoSlNTdHJpbmdSZWYgbW9kZSkKIHsKICAgICAvLyBGSVhNRTogaW1w
bGVtZW50CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCBlMjYyYjI1Li4yYmMwNGE4IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTkyLDggKzkyLDYgQEAgaW50ZXJmYWNlIFRl
c3RSdW5uZXIgewogICAgIC8vIFByaW50aW5nCiAgICAgYm9vbGVhbiBpc1BhZ2VCb3hWaXNpYmxl
KGludCBwYWdlSW5kZXgpOwogCi0gICAgW1Bhc3NDb250ZXh0XSB2b2lkIHNldFZhbHVlRm9yVXNl
cihvYmplY3QgZWxlbWVudCwgRE9NU3RyaW5nIHZhbHVlKTsKLQogICAgIC8vIFVzZXJDb250ZW50
IHRlc3RpbmcuCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0KERPTVN0cmluZyBzb3VyY2UsIGJvb2xl
YW4gcnVuQXRTdGFydCwgYm9vbGVhbiBhbGxGcmFtZXMpOwogICAgIHZvaWQgYWRkVXNlclN0eWxl
U2hlZXQoRE9NU3RyaW5nIHNvdXJjZSwgYm9vbGVhbiBhbGxGcmFtZXMpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXgg
M2YyZDAzOC4uOTcyOTI0YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0zNjcsMTUgKzM2Nyw2IEBAIGJvb2wgVGVz
dFJ1bm5lcjo6aXNQYWdlQm94VmlzaWJsZShpbnQgcGFnZUluZGV4KQogICAgIHJldHVybiBXS0J1
bmRsZUlzUGFnZUJveFZpc2libGUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBt
YWluRnJhbWUsIHBhZ2VJbmRleCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JV
c2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGVsZW1lbnQsIEpTU3RyaW5nUmVm
IHZhbHVlKQotewotICAgIGlmICghZWxlbWVudCB8fCAhSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQs
IGVsZW1lbnQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXS1JldGFpblB0cjxXS0J1bmRsZU5v
ZGVIYW5kbGVSZWY+IG5vZGVIYW5kbGUoQWRvcHRXSywgV0tCdW5kbGVOb2RlSGFuZGxlQ3JlYXRl
KGNvbnRleHQsIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KGVsZW1lbnQpKSk7Ci0gICAgV0tCdW5k
bGVOb2RlSGFuZGxlU2V0SFRNTElucHV0RWxlbWVudFZhbHVlRm9yVXNlcihub2RlSGFuZGxlLmdl
dCgpLCB0b1dLKHZhbHVlKS5nZXQoKSk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXVkaW9S
ZXN1bHQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZGF0YSkKIHsKICAgICBXS1Jl
dGFpblB0cjxXS0RhdGFSZWY+IGF1ZGlvRGF0YShBZG9wdFdLLCBXS0J1bmRsZUNyZWF0ZVdLRGF0
YUZyb21VSW50OEFycmF5KEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgY29udGV4
dCwgZGF0YSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaAppbmRleCAzOGNlZjZiLi43MWU3Yzc3IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtMTU4LDggKzE1
OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUoSlNTdHJp
bmdSZWYpOwogICAgIHZvaWQgc2V0QXV0aGVudGljYXRpb25QYXNzd29yZChKU1N0cmluZ1JlZik7
CiAKLSAgICB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgZWxl
bWVudCwgSlNTdHJpbmdSZWYgdmFsdWUpOwotCiAgICAgLy8gQXVkaW8gdGVzdGluZy4KICAgICB2
b2lkIHNldEF1ZGlvUmVzdWx0KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBkYXRhKTsKIAotLSAK
MS44LjEuMgoK
</data>
<flag name="commit-queue"
          id="236803"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214360</attachid>
            <date>2013-10-16 06:59:22 -0700</date>
            <delta_ts>2013-10-16 12:49:15 -0700</delta_ts>
            <desc>WIP Patch for EWS testing</desc>
            <filename>0001-Move-TestRunner-setValueForUser-to-Internals.patch</filename>
            <type>text/plain</type>
            <size>22423</size>
            <attacher name="Andre Loureiro (IRC: loureiro)">andre.vl</attacher>
            
              <data encoding="base64">RnJvbSA4ZDY2MjU3NTVkMTczZGNmMDFiNDhlMjU3MjdiZmY5NzVmNjYzNThhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZSBMb3VyZWlybyA8YW5kcmUudmxAc2Ftc3VuZy5jb20+
CkRhdGU6IFdlZCwgMTYgT2N0IDIwMTMgMDk6NTY6MTAgLTA0MDAKU3ViamVjdDogW1BBVENIXSBN
b3ZlIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlciB0byBJbnRlcm5hbHMKIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDM5OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgpTb3VyY2UvV2ViQ29yZToKCk5vIG5ldyB0ZXN0cyAoT09QUyEpLgoKKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CihXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFZhbHVlRm9yVXNlcik6Ciog
dGVzdGluZy9JbnRlcm5hbHMuaDoKKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CgpTb3VyY2UvV2Vi
S2l0OgoKKiBXZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0
cy5kZWYuaW46CgpTb3VyY2UvV2ViS2l0L2VmbDoKCiogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmNwcDoKKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmwuaDoKClNvdXJjZS9XZWJLaXQvZ3RrOgoKKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGsuY3BwOgoqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0ay5oOgoKVG9vbHM6CgoqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgooVGVzdFJ1
bm5lcjo6c3RhdGljRnVuY3Rpb25zKToKKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmg6Ciog
RHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwOgoqIER1bXBSZW5kZXJUcmVlL2d0
ay9UZXN0UnVubmVyR3RrLmNwcDoKKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5t
bToKKiBEdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHA6CiogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgoqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgoKTGF5b3V0VGVzdHM6CgoqIGZhc3QvZm9ybXMv
b25jaGFuZ2Utc2V0dmFsdWVmb3J1c2VyLmh0bWw6Ci0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOSArKysrKysrKysKIC4uLi9mYXN0L2Zv
cm1zL29uY2hhbmdlLXNldHZhbHVlZm9ydXNlci5odG1sICAgICAgIHwgIDQgKystLQogU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNCArKysrKysr
KysrKysrCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgICAgICAgICAgICAg
ICB8ICA5ICsrKysrKysrKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCAgICAg
ICAgICAgICAgICAgfCAgMSArCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwg
ICAgICAgICAgICAgICB8ICAyICsrCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICA5ICsrKysrKysrKwogLi4uL1dlYktpdEV4cG9ydEdlbmVyYXRv
ci9XZWJLaXRFeHBvcnRzLmRlZi5pbiAgICAgfCAgMSArCiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrKysrKysKIC4uLi9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwICAgIHwgMTMgLS0tLS0tLS0tLS0t
CiAuLi4vZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oICB8ICAx
IC0KIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgIHwg
MTAgKysrKysrKysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5jcHAgICAgfCAxNiAtLS0tLS0tLS0tLS0tLS0KIC4uLi9ndGsvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrLmggIHwgIDEgLQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxOCArKysrKysrKysrKysrKysrKwogVG9vbHMv
RHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgICAgICAgICAgICAgICAgfCAxNiAtLS0tLS0t
LS0tLS0tLS0KIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaCAgICAgICAgICAgICAg
ICAgIHwgIDEgLQogVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwICAg
ICAgICAgfCAgNSAtLS0tLQogVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsu
Y3BwICAgICAgICAgfCAgNSAtLS0tLQogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5u
ZXJNYWMubW0gICAgICAgICAgfCAxMCAtLS0tLS0tLS0tCiBUb29scy9EdW1wUmVuZGVyVHJlZS93
aW4vVGVzdFJ1bm5lcldpbi5jcHAgICAgICAgICB8IDIzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IC4uLi9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCAgICAgICAgIHwgIDIg
LS0KIC4uLi9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIHwg
IDkgLS0tLS0tLS0tCiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaCB8ICAyIC0tCiAyNCBmaWxlcyBjaGFuZ2VkLCA4NSBpbnNlcnRpb25zKCspLCAxMDYg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM0NzQ0ZGIuLjEyNzZiNjggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAxMy0xMC0xNiAgQW5kcmUgTG91cmVpcm8gIDxhbmRyZS52bEBzYW1zdW5nLmNvbT4K
KworICAgICAgICBNb3ZlIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlciB0byBJbnRlcm5hbHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Mzk4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zv
cm1zL29uY2hhbmdlLXNldHZhbHVlZm9ydXNlci5odG1sOgorCiAyMDEzLTEwLTE0ICBHeXV5b3Vu
ZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4g
RUZMIEdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvb25jaGFu
Z2Utc2V0dmFsdWVmb3J1c2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29uY2hhbmdl
LXNldHZhbHVlZm9ydXNlci5odG1sCmluZGV4IDc1ODM3ZmIuLjk2NmVjNzUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvb25jaGFuZ2Utc2V0dmFsdWVmb3J1c2VyLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbmNoYW5nZS1zZXR2YWx1ZWZvcnVzZXIuaHRtbApA
QCAtMTUsOCArMTUsOCBAQAogICAgICAgICB9CiAKICAgICAgICAgdGYuZm9jdXMoKTsKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFZh
bHVlRm9yVXNlcih0ZiwgJ0hlbGxvIScpOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykg
eworICAgICAgICAgICAgaW50ZXJuYWxzLnNldFZhbHVlRm9yVXNlcih0ZiwgJ0hlbGxvIScpOwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gU2hvdWxkIG5vdCBmaXJlIHRoZSBldmVudCB1bnRpbCBm
b2N1cyBpcyBsb3N0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDkyOTVmZDYuLjRkZDNjOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxMy0xMC0xNiAgQW5kcmUgTG91cmVpcm8gIDxhbmRyZS52bEBz
YW1zdW5nLmNvbT4KKworICAgICAgICBNb3ZlIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlciB0
byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg0Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFZhbHVlRm9yVXNlcik6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMTMtMTAtMTQgIEFydmlkIE5pbHNzb24gIDxhbmlsc3NvbkBibGFja2JlcnJ5LmNv
bT4KIAogICAgICAgICBEb24ndCBjcmFzaCBhZnRlciBPcGVuR0wgcm9idXN0bmVzcyByZXNldApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDVmZGY2ODMuLjA0M2RmYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIwODksNCArMjA4OSwxMyBAQCBi
b29sIEludGVybmFsczo6aXNQbHVnaW5VbmF2YWlsYWJpbGl0eUluZGljYXRvck9ic2N1cmVkKEVs
ZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdAogICAgIHJldHVybiBlbWJlZC0+aXNSZXBsYWNlbWVudE9i
c2N1cmVkKCk7CiB9CiAKK3ZvaWQgSW50ZXJuYWxzOjpzZXRWYWx1ZUZvclVzZXIoRWxlbWVudCog
ZWxlbWVudCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
aWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT50b0lucHV0RWxlbWVudCgpKSB7CisgICAgICAgIGVj
ID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVsZW1l
bnQtPnRvSW5wdXRFbGVtZW50KCktPnNldFZhbHVlRm9yVXNlcih2YWx1ZSk7Cit9CisKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDkwYWFhYjEuLmYwMWMwMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMzE4LDYgKzMxOCw3IEBAIHB1YmxpYzoKICNlbmRp
ZgogCiAgICAgYm9vbCBpc1BsdWdpblVuYXZhaWxhYmlsaXR5SW5kaWNhdG9yT2JzY3VyZWQoRWxl
bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldFZhbHVlRm9yVXNlcihFbGVtZW50
KiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IEludGVybmFscyhEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CmluZGV4IGJhYTQxYzUuLjgzNTg5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKQEAgLTI3Miw0ICsyNzIsNiBAQAogICAgIFtSYWlzZXNFeGNlcHRpb25dIGJvb2xlYW4gaXNQ
bHVnaW5VbmF2YWlsYWJpbGl0eUluZGljYXRvck9ic2N1cmVkKEVsZW1lbnQgZWxlbWVudCk7CiAK
ICAgICBbUmFpc2VzRXhjZXB0aW9uXSBDbGllbnRSZWN0IHNlbGVjdGlvbkJvdW5kcygpOworCisg
ICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRWYWx1ZUZvclVzZXIoRWxlbWVudCBpbnB1dEVs
ZW1lbnQsIERPTVN0cmluZyB2YWx1ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzNWVmYzY2Li41ODkwMWVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTEwLTE2ICBBbmRyZSBMb3VyZWlybyAg
PGFuZHJlLnZsQHNhbXN1bmcuY29tPgorCisgICAgICAgIE1vdmUgVGVzdFJ1bm5lcjo6c2V0VmFs
dWVGb3JVc2VyIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODQzOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJL
aXRFeHBvcnRzLmRlZi5pbjoKKwogMjAxMy0xMC0xMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBXaW5kb3dzIGJ1aWxkIGZpeCBhdHRlbXB0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2Vi
S2l0RXhwb3J0cy5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4
cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgppbmRleCBlN2FlYWE0Li4yNTNmNzE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdl
bmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52
Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgpAQCAtNDU5
LDMgKzQ1OSw0IEBAIEVYUE9SVFMKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2ZpeGVkRm9u
dEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRQkVBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3Jp
cHRDb2RlQEBAWiwgP2ZpeGVkRm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRRUJBQUVCVkF0
b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENvZGVAQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9p
bnRlcig/ZmFudGFzeUZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUJFQUJWQXRvbWljU3Ry
aW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFosID9mYW50YXN5Rm9udEZhbWlseUBTZXR0aW5nc0BX
ZWJDb3JlQEBRRUJBQUVCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENvZGVAQEBaKQogICAg
ICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Y3Vyc2l2ZUZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29y
ZUBAUUJFQUJWQXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFosID9jdXJzaXZlRm9u
dEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRRUJBQUVCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNj
cmlwdENvZGVAQEBaKQorICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/c2V0VmFsdWVGb3JVc2Vy
QEhUTUxJbnB1dEVsZW1lbnRAV2ViQ29yZUBAUUFFWEFCVlN0cmluZ0BXVEZAQEBaLCA/c2V0VmFs
dWVGb3JVc2VyQEludGVybmFsc0BXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEFCVlN0cmluZ0BX
VEZAQEFBSEBaKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDczOTAwZDUuLjkxYWEzYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMC0xNiAgQW5kcmUgTG91cmVpcm8gIDxh
bmRyZS52bEBzYW1zdW5nLmNvbT4KKworICAgICAgICBNb3ZlIFRlc3RSdW5uZXI6OnNldFZhbHVl
Rm9yVXNlciB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg0Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3Bw
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgor
CiAyMDEzLTEwLTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ29u
c29saWRhdGUgZmluZFN0cmluZyBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCmlu
ZGV4IDljNjhjOTEuLmYyNjk2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApAQCAtMjMy
LDE5ICsyMzIsNiBAQCBjb25zdCBXZWJDb3JlOjpVUkwgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
Ojpwcm92aXNpb25hbFVSTChjb25zdCBFdmFzX09iamVjdCogZQogICAgIHJldHVybiBwcm92aXNp
b25hbERvY3VtZW50TG9hZGVyLT51cmwoKTsKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBu
b2RlT2JqZWN0LCBjb25zdCBTdHJpbmcmIHZhbHVlKQotewotICAgIEpTQzo6RXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50ID0gV2Vi
Q29yZTo6dG9FbGVtZW50KHRvSlMoZXhlYywgbm9kZU9iamVjdCkpOwotICAgIGlmICghZWxlbWVu
dCkKLSAgICAgICAgcmV0dXJuOwotICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIGlucHV0
RWxlbWVudCA9IGVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgaWYgKCFpbnB1dEVsZW1l
bnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlucHV0RWxlbWVudC0+c2V0VmFsdWVGb3JVc2Vy
KHZhbHVlKTsKLX0KLQogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldERlZmVyc0xv
YWRpbmcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgZGVmZXJzKQogewogICAgIERSVF9TVVBQ
UlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmggYi9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
aAppbmRleCA1OGNkNDgzLi44M2RjZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaApAQCAtNjgs
NyArNjgsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBzdWl0YWJsZURSVEZyYW1lTmFt
ZShjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpOwogICAgIHN0YXRpYyBjb25zdCBXZWJDb3Jl
OjpVUkwgcHJvdmlzaW9uYWxVUkwoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKICAgICBz
dGF0aWMgU3RyaW5nIGxheWVyVHJlZUFzVGV4dChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUp
OwotICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYsIEpTVmFsdWVS
ZWYgbm9kZU9iamVjdCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgc2V0
RGVmZXJzTG9hZGluZyhFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBkZWZlcnMpOwogICAgIHN0
YXRpYyB2b2lkIHNldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5nKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGxvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRp
bmdQcmVmZXJlbmNlcyk7CiAgICAgc3RhdGljIHZvaWQgc2V0TWluaW11bUxvZ2ljYWxGb250U2l6
ZShFdmFzX09iamVjdCogZXdrVmlldywgaW50IHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGRj
MTE1MTIuLjBlOTA5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0x
MC0xNiAgQW5kcmUgTG91cmVpcm8gIDxhbmRyZS52bEBzYW1zdW5nLmNvbT4KKworICAgICAgICBN
b3ZlIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlciB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Mzk4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgorCiAyMDEzLTEwLTA5ICBNYXJpbyBTYW5jaGV6IFByYWRh
ICA8bWFyaW8ucHJhZGFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0FUS10gSW1wbGVtZW50IG5l
dyBBUEkgaW4gQXRrVGV4dDogYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0ay5jcHAKaW5kZXggYzk4ZmQwNi4uMjMwNTgyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGsuY3BwCkBAIC00NzYsMjIgKzQ3Niw2IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrOjpmaW5kU3RyaW5nKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiB0
CiAgICAgcmV0dXJuIGNvcmUod2ViVmlldyktPmZpbmRTdHJpbmcoU3RyaW5nOjpmcm9tVVRGOCh0
YXJnZXRTdHJpbmcpLCBmaW5kT3B0aW9ucyk7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrOjpzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYg
bm9kZU9iamVjdCwgSlNTdHJpbmdSZWYgdmFsdWUpCi17Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGNvbnRleHQpOwotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQodG9K
UyhleGVjLCBub2RlT2JqZWN0KSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47
Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZWxlbWVudC0+dG9JbnB1dEVs
ZW1lbnQoKTsKLSAgICBpZiAoIWlucHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
c2l6ZV90IGJ1ZmZlclNpemUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUodmFs
dWUpOwotICAgIEdPd25QdHI8Z2NoYXI+IHZhbHVlQnVmZmVyKHN0YXRpY19jYXN0PGdjaGFyKj4o
Z19tYWxsb2MoYnVmZmVyU2l6ZSkpKTsKLSAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKHZhbHVl
LCB2YWx1ZUJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7Ci0gICAgaW5wdXRFbGVtZW50LT5zZXRW
YWx1ZUZvclVzZXIoU3RyaW5nOjpmcm9tVVRGOCh2YWx1ZUJ1ZmZlci5nZXQoKSkpOwotfQotCiB2
b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cmVjdGFuZ2xlRm9yU2VsZWN0aW9uKFdlYktp
dFdlYkZyYW1lKiBmcmFtZSwgY2Fpcm9fcmVjdGFuZ2xlX2ludF90KiByZWN0YW5nbGUpCiB7CiAg
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmggYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaApp
bmRleCA0ZmQ2MjU1Li44NmI3ZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaApAQCAtNjYsNyAr
NjYsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEF0a09iamVjdCogZ2V0Rm9jdXNlZEFjY2Vzc2li
bGVFbGVtZW50KFdlYktpdFdlYkZyYW1lKik7CiAgICAgc3RhdGljIEF0a09iamVjdCogZ2V0Um9v
dEFjY2Vzc2libGVFbGVtZW50KFdlYktpdFdlYkZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgbGF5
b3V0RnJhbWUoV2ViS2l0V2ViRnJhbWUqKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZUZvclVz
ZXIoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBKU1N0cmluZ1JlZik7CiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkQ2xvc2UoV2ViS2l0V2ViRnJhbWUqKTsKIAogICAgIC8vIFdlYktpdFdlYlZpZXcK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlN2Fk
YTI5Li4yYmI2MjFjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTMtMTAtMTYgIEFuZHJlIExvdXJlaXJvICA8YW5k
cmUudmxAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgTW92ZSBUZXN0UnVubmVyOjpzZXRWYWx1ZUZv
clVzZXIgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NDM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChUZXN0
UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RS
dW5uZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHA6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisKIDIwMTMtMTAt
MTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIERlcHJlY2F0ZSBv
ciByZW1vdmUgZGVsZXRlQWxsVmFsdWVzIGZ1bmN0aW9uczsgdGhlcmUgYXJlIG9ubHkgYSBmZXcg
Y2FsbCBzaXRlcyBsZWZ0CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVu
bmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDVjMGQw
M2MuLjQ4OWU1MmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xMzc3LDIx
ICsxMzc3LDYgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkNh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamUKICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVmIHNldFZhbHVlRm9y
VXNlckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKLXsKLSAgICAvLyBIYXMg
bWFjIGltcGxlbWVudGF0aW9uCi0gICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMikKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotCi0gICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IHZhbHVlKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFy
Z3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7Ci0gICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKLQotICAg
IFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBjb250cm9sbGVyLT5zZXRWYWx1ZUZvclVz
ZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCB2YWx1ZS5nZXQoKSk7Ci0KLSAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci19Ci0KIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFZp
ZXdNb2RlTWVkaWFGZWF0dXJlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQog
ewogICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRpb24KQEAgLTIxNjgsNyArMjE1Myw2IEBAIEpT
U3RhdGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsg
InNldFVzZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlIiwgc2V0VXNlRGFzaGJvYXJkQ29tcGF0
aWJpbGl0eU1vZGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRVc2VyU3R5bGVTaGVl
dEVuYWJsZWQiLCBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uIiwgc2V0VXNlclN0eWxlU2hlZXRMb2Nh
dGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAgIHsgInNldFZhbHVlRm9yVXNlciIsIHNldFZh
bHVlRm9yVXNlckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFZpZXdNb2RlTWVkaWFG
ZWF0dXJlIiwgc2V0Vmlld01vZGVNZWRpYUZlYXR1cmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJzZXRXZWJWaWV3RWRpdGFibGUiLCBzZXRXZWJWaWV3RWRpdGFibGVDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlciIsIHNldFdpbGxT
ZW5kUmVxdWVzdENsZWFySGVhZGVyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RS
dW5uZXIuaAppbmRleCA4Y2RhY2Q5Li4zMjE2MDFlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5l
ci5oCkBAIC0xMTQsNyArMTE0LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNlRGFzaGJvYXJk
Q29tcGF0aWJpbGl0eU1vZGUoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFVzZXJTdHlsZVNoZWV0
RW5hYmxlZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihK
U1N0cmluZ1JlZiBwYXRoKTsKLSAgICB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYs
IEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgSlNTdHJpbmdSZWYgdmFsdWUpOwogICAgIHZvaWQgc2V0
Vmlld01vZGVNZWRpYUZlYXR1cmUoSlNTdHJpbmdSZWYpOwogICAgIHZvaWQgc2V0WFNTQXVkaXRv
ckVuYWJsZWQoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxl
ZChib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVy
RWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcAppbmRl
eCAwNzQ2ZTUyLi5hYTYxZDViIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwv
VGVzdFJ1bm5lckVmbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5u
ZXJFZmwuY3BwCkBAIC0yNDQsMTEgKzI0NCw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlclN0
eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKQogICAgICAgICBzZXRVc2VyU3R5bGVT
aGVldEVuYWJsZWQodHJ1ZSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2Vy
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIEpTU3RyaW5nUmVm
IHZhbHVlKQotewotICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0VmFsdWVGb3JVc2Vy
KGNvbnRleHQsIG5vZGVPYmplY3QsIHZhbHVlLT5zdHJpbmcoKSk7Ci19Ci0KIHZvaWQgVGVzdFJ1
bm5lcjo6c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoSlNTdHJpbmdSZWYgbW9kZSkKIHsKICNpZiBF
TkFCTEUoVklFV19NT0RFX0NTU19NRURJQSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0
UnVubmVyR3RrLmNwcAppbmRleCAyNjVmYjVjLi4wODc2OTBlIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCkBAIC0yNzEsMTEgKzI3MSw2IEBAIHZvaWQgVGVz
dFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKQogICAg
ICAgICBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQodHJ1ZSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5l
cjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVP
YmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKQotewotICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
azo6c2V0VmFsdWVGb3JVc2VyKGNvbnRleHQsIG5vZGVPYmplY3QsIHZhbHVlKTsKLX0KLQogdm9p
ZCBUZXN0UnVubmVyOjpzZXRWaWV3TW9kZU1lZGlhRmVhdHVyZShKU1N0cmluZ1JlZiBtb2RlKQog
ewogICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmll
dyhtYWluRnJhbWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RS
dW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpp
bmRleCBhNDZkNDI4Li43YTlhOGY2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbQpAQCAtNTkyLDE2ICs1OTIsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJT
dHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCkKICAgICBbW1dlYlByZWZlcmVuY2Vz
IHN0YW5kYXJkUHJlZmVyZW5jZXNdIHNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb246dXJsXTsKIH0K
IAotdm9pZCBUZXN0UnVubmVyOjpzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgSlNTdHJpbmdSZWYgdmFsdWUpCi17Ci0gICAgRE9NRWxl
bWVudCAqZWxlbWVudCA9IFtET01FbGVtZW50IF9ET01FbGVtZW50RnJvbUpTQ29udGV4dDpjb250
ZXh0IHZhbHVlOm5vZGVPYmplY3RdOwotICAgIGlmICghZWxlbWVudCB8fCAhW2VsZW1lbnQgaXNL
aW5kT2ZDbGFzczpbRE9NSFRNTElucHV0RWxlbWVudCBjbGFzc11dKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHZhbHVlQ0YgPSBhZG9wdENGKEpTU3RyaW5n
Q29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHZhbHVlKSk7Ci0gICAgWyhET01IVE1M
SW5wdXRFbGVtZW50ICopZWxlbWVudCBzZXRWYWx1ZUZvclVzZXI6KE5TU3RyaW5nICopdmFsdWVD
Ri5nZXQoKV07Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUo
SlNTdHJpbmdSZWYgbW9kZSkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKaW5kZXggM2ZiMWM1YS4uM2ZjNDYyNiAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcApAQCAtNjY3LDI5
ICs2NjcsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNT
dHJpbmdSZWYganNVUkwpCiAgICAgU3lzRnJlZVN0cmluZyhyZXN1bHRQYXRoQlNUUik7CiB9CiAK
LXZvaWQgVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U1ZhbHVlUmVmIGVsZW1lbnQsIEpTU3RyaW5nUmVmIHZhbHVlKQotewotICAgIENPTVB0cjxJV2Vi
Vmlldz4gd2ViVmlldzsKLSAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGU+IHdlYlZpZXdQ
cml2YXRlKFF1ZXJ5LCB3ZWJWaWV3KTsKLSAgICBpZiAoIXdlYlZpZXdQcml2YXRlKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBDT01QdHI8SURPTUVsZW1lbnQ+IGRvbUVsZW1lbnQ7Ci0gICAgaWYg
KEZBSUxFRCh3ZWJWaWV3UHJpdmF0ZS0+ZWxlbWVudEZyb21KUyhjb250ZXh0LCBlbGVtZW50LCAm
ZG9tRWxlbWVudCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDT01QdHI8SURPTUhUTUxJbnB1
dEVsZW1lbnQ+IGRvbUlucHV0RWxlbWVudDsKLSAgICBpZiAoRkFJTEVEKGRvbUVsZW1lbnQtPlF1
ZXJ5SW50ZXJmYWNlKElJRF9JRE9NSFRNTElucHV0RWxlbWVudCwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKio+KCZkb21JbnB1dEVsZW1lbnQpKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIF9ic3Ry
X3QgdmFsdWVCU1RSKEpTU3RyaW5nQ29weUJTVFIodmFsdWUpLCBmYWxzZSk7Ci0KLSAgICBkb21J
bnB1dEVsZW1lbnQtPnNldFZhbHVlRm9yVXNlcih2YWx1ZUJTVFIpOwotfQotCiB2b2lkIFRlc3RS
dW5uZXI6OnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKEpTU3RyaW5nUmVmIG1vZGUpCiB7CiAgICAg
Ly8gRklYTUU6IGltcGxlbWVudApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggZTI2MmIy
NS4uMmJjMDRhOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC05Miw4ICs5Miw2IEBA
IGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICAvLyBQcmludGluZwogICAgIGJvb2xlYW4gaXNQ
YWdlQm94VmlzaWJsZShpbnQgcGFnZUluZGV4KTsKIAotICAgIFtQYXNzQ29udGV4dF0gdm9pZCBz
ZXRWYWx1ZUZvclVzZXIob2JqZWN0IGVsZW1lbnQsIERPTVN0cmluZyB2YWx1ZSk7Ci0KICAgICAv
LyBVc2VyQ29udGVudCB0ZXN0aW5nLgogICAgIHZvaWQgYWRkVXNlclNjcmlwdChET01TdHJpbmcg
c291cmNlLCBib29sZWFuIHJ1bkF0U3RhcnQsIGJvb2xlYW4gYWxsRnJhbWVzKTsKICAgICB2b2lk
IGFkZFVzZXJTdHlsZVNoZWV0KERPTVN0cmluZyBzb3VyY2UsIGJvb2xlYW4gYWxsRnJhbWVzKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwCmluZGV4IDNmMmQwMzguLjk3MjkyNGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMzY3LDE1ICszNjcs
NiBAQCBib29sIFRlc3RSdW5uZXI6OmlzUGFnZUJveFZpc2libGUoaW50IHBhZ2VJbmRleCkKICAg
ICByZXR1cm4gV0tCdW5kbGVJc1BhZ2VCb3hWaXNpYmxlKEluamVjdGVkQnVuZGxlOjpzaGFyZWQo
KS5idW5kbGUoKSwgbWFpbkZyYW1lLCBwYWdlSW5kZXgpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6
OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBlbGVtZW50
LCBKU1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICBpZiAoIWVsZW1lbnQgfHwgIUpTVmFsdWVJc09i
amVjdChjb250ZXh0LCBlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV0tSZXRhaW5Q
dHI8V0tCdW5kbGVOb2RlSGFuZGxlUmVmPiBub2RlSGFuZGxlKEFkb3B0V0ssIFdLQnVuZGxlTm9k
ZUhhbmRsZUNyZWF0ZShjb250ZXh0LCBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihlbGVtZW50KSkp
OwotICAgIFdLQnVuZGxlTm9kZUhhbmRsZVNldEhUTUxJbnB1dEVsZW1lbnRWYWx1ZUZvclVzZXIo
bm9kZUhhbmRsZS5nZXQoKSwgdG9XSyh2YWx1ZSkuZ2V0KCkpOwotfQotCiB2b2lkIFRlc3RSdW5u
ZXI6OnNldEF1ZGlvUmVzdWx0KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEp
CiB7CiAgICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiBhdWRpb0RhdGEoQWRvcHRXSywgV0tCdW5k
bGVDcmVhdGVXS0RhdGFGcm9tVUludDhBcnJheShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVu
ZGxlKCksIGNvbnRleHQsIGRhdGEpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggMzhjZWY2Yi4uNzFlN2M3NyAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgK
QEAgLTE1OCw4ICsxNTgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBdXRoZW50aWNhdGlvblVz
ZXJuYW1lKEpTU3RyaW5nUmVmKTsKICAgICB2b2lkIHNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQo
SlNTdHJpbmdSZWYpOwogCi0gICAgdm9pZCBzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmLCBK
U1ZhbHVlUmVmIGVsZW1lbnQsIEpTU3RyaW5nUmVmIHZhbHVlKTsKLQogICAgIC8vIEF1ZGlvIHRl
c3RpbmcuCiAgICAgdm9pZCBzZXRBdWRpb1Jlc3VsdChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYg
ZGF0YSk7CiAKLS0gCjEuOC4xLjIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214386</attachid>
            <date>2013-10-16 12:49:15 -0700</date>
            <delta_ts>2022-03-01 02:56:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Move-TestRunner-setValueForUser-to-Internals.patch</filename>
            <type>text/plain</type>
            <size>22548</size>
            <attacher name="Andre Loureiro (IRC: loureiro)">andre.vl</attacher>
            
              <data encoding="base64">RnJvbSAzYmQ3MDE3MTc1NWNhMmIyMDUxMGM1YzgwNGVkM2ZhZDM0MWQ1ODQwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZSBMb3VyZWlybyA8YW5kcmUudmxAc2Ftc3VuZy5jb20+
CkRhdGU6IFdlZCwgMTYgT2N0IDIwMTMgMTU6NDI6MTIgLTA0MDAKU3ViamVjdDogW1BBVENIXSBN
b3ZlIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlciB0byBJbnRlcm5hbHMKIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDM5OAoKUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCgpTb3VyY2UvV2ViQ29yZToKCk5vIG5ldyB0ZXN0cy4gSnVzdCB1cGRhdGluZyB0aGUgYWxy
ZWFkeSBleGlzdGluZyBvbmVzLgoKKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CihXZWJDb3JlOjpJ
bnRlcm5hbHM6OnNldFZhbHVlRm9yVXNlcik6CiogdGVzdGluZy9JbnRlcm5hbHMuaDoKKiB0ZXN0
aW5nL0ludGVybmFscy5pZGw6CgpTb3VyY2UvV2ViS2l0OiBFeHBvcnQgc3ltYm9scyB0byBXSU4g
YnVpbGQKCiogV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9y
dHMuZGVmLmluOgoKU291cmNlL1dlYktpdC9lZmw6IE1vdmUgc2V0VmFsdWVGb3JVc2VyIHRvIElu
dGVybmFscwoKKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgoq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgoKU291cmNlL1dlYktp
dC9ndGs6IERpdHRvCgoqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5j
cHA6CiogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmg6CgpUb29sczog
RGl0dG8KCiogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CihUZXN0UnVubmVyOjpzdGF0
aWNGdW5jdGlvbnMpOgoqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaDoKKiBEdW1wUmVuZGVy
VHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHA6CiogRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5u
ZXJHdGsuY3BwOgoqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgoqIER1bXBS
ZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcDoKKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgoqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CiogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmg6CgpMYXlvdXRUZXN0czogQ2FsbGluZyBzZXRWYWx1ZUZvclVzZXIg
ZnJvbSBJbnRlcm5hbHMKCiogZmFzdC9mb3Jtcy9vbmNoYW5nZS1zZXR2YWx1ZWZvcnVzZXIuaHRt
bDoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICA5ICsrKysrKysrKwogLi4uL2Zhc3QvZm9ybXMvb25jaGFuZ2Utc2V0dmFsdWVmb3J1c2Vy
Lmh0bWwgICAgICAgfCAgNCArKy0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IDE0ICsrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCAgICAgICAgICAgICAgIHwgIDkgKysrKysrKysrCiBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oICAgICAgICAgICAgICAgICB8ICAxICsKIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCAgICAgICAgICAgICAgIHwgIDIgKysKIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkgKysrKysr
KysrCiAuLi4vV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluICAgICB8
ICAxICsKIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
IHwgMTAgKysrKysrKysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbC5jcHAgICAgfCAxMyAtLS0tLS0tLS0tLS0KIC4uLi9lZmwvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmggIHwgIDEgLQogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKysrKysrKysrCiAuLi4vV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcCAgICB8IDE2IC0tLS0tLS0tLS0tLS0t
LQogLi4uL2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaCAgfCAg
MSAtCiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IDE4ICsrKysrKysrKysrKysrKysrCiBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNw
cCAgICAgICAgICAgICAgICB8IDE2IC0tLS0tLS0tLS0tLS0tLQogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdFJ1bm5lci5oICAgICAgICAgICAgICAgICAgfCAgMSAtCiBUb29scy9EdW1wUmVuZGVy
VHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAgICAgICAgICB8ICA1IC0tLS0tCiBUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAgICAgICAgICB8ICA1IC0tLS0tCiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSAgICAgICAgICB8IDEwIC0tLS0t
LS0tLS0KIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcCAgICAgICAg
IHwgMjMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLi4uL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsICAgICAgICAgfCAgMiAtLQogLi4uL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgfCAgOSAtLS0tLS0tLS0KIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIHwgIDIgLS0KIDI0IGZpbGVzIGNo
YW5nZWQsIDg1IGluc2VydGlvbnMoKyksIDEwNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzQ3NDRk
Yi4uYWZkNjExMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTEwLTE2ICBBbmRyZSBMb3Vy
ZWlybyAgPGFuZHJlLnZsQHNhbXN1bmcuY29tPgorCisgICAgICAgIE1vdmUgVGVzdFJ1bm5lcjo6
c2V0VmFsdWVGb3JVc2VyIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzOTgKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICAqIGZhc3QvZm9ybXMvb25jaGFuZ2Utc2V0dmFsdWVmb3J1c2VyLmh0
bWw6CisKIDIwMTMtMTAtMTQgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLiBFRkwgR2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbmNoYW5nZS1zZXR2YWx1ZWZvcnVzZXIuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvb25jaGFuZ2Utc2V0dmFsdWVmb3J1c2VyLmh0bWwKaW5kZXggNzU4
MzdmYi4uOTY2ZWM3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbmNoYW5n
ZS1zZXR2YWx1ZWZvcnVzZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29uY2hh
bmdlLXNldHZhbHVlZm9ydXNlci5odG1sCkBAIC0xNSw4ICsxNSw4IEBACiAgICAgICAgIH0KIAog
ICAgICAgICB0Zi5mb2N1cygpOwotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0VmFsdWVGb3JVc2VyKHRmLCAnSGVsbG8hJyk7CisgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0VmFs
dWVGb3JVc2VyKHRmLCAnSGVsbG8hJyk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBTaG91bGQg
bm90IGZpcmUgdGhlIGV2ZW50IHVudGlsIGZvY3VzIGlzIGxvc3QuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTI5
NWZkNi4uZTRhY2ZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTEwLTE2ICBB
bmRyZSBMb3VyZWlybyAgPGFuZHJlLnZsQHNhbXN1bmcuY29tPgorCisgICAgICAgIE1vdmUgVGVz
dFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzOTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
c2V0VmFsdWVGb3JVc2VyKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMy0xMC0xNCAgQXJ2aWQgTmlsc3NvbiAg
PGFuaWxzc29uQGJsYWNrYmVycnkuY29tPgogCiAgICAgICAgIERvbid0IGNyYXNoIGFmdGVyIE9w
ZW5HTCByb2J1c3RuZXNzIHJlc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggNWZkZjY4My4uMDQzZGZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApA
QCAtMjA4OSw0ICsyMDg5LDEzIEBAIGJvb2wgSW50ZXJuYWxzOjppc1BsdWdpblVuYXZhaWxhYmls
aXR5SW5kaWNhdG9yT2JzY3VyZWQoRWxlbWVudCogZWxlbWVudCwgRXhjZXB0CiAgICAgcmV0dXJu
IGVtYmVkLT5pc1JlcGxhY2VtZW50T2JzY3VyZWQoKTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OnNl
dFZhbHVlRm9yVXNlcihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNl
cHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPnRvSW5wdXRF
bGVtZW50KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKS0+c2V0VmFsdWVGb3JV
c2VyKHZhbHVlKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggOTBh
YWFiMS4uZjAxYzAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0zMTgsNiAr
MzE4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBib29sIGlzUGx1Z2luVW5hdmFpbGFiaWxp
dHlJbmRpY2F0b3JPYnNjdXJlZChFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
c2V0VmFsdWVGb3JVc2VyKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7
CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggYmFhNDFjNS4uODM1ODk4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMjcyLDQgKzI3Miw2IEBACiAgICAgW1JhaXNl
c0V4Y2VwdGlvbl0gYm9vbGVhbiBpc1BsdWdpblVuYXZhaWxhYmlsaXR5SW5kaWNhdG9yT2JzY3Vy
ZWQoRWxlbWVudCBlbGVtZW50KTsKIAogICAgIFtSYWlzZXNFeGNlcHRpb25dIENsaWVudFJlY3Qg
c2VsZWN0aW9uQm91bmRzKCk7CisKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldFZhbHVl
Rm9yVXNlcihFbGVtZW50IGlucHV0RWxlbWVudCwgRE9NU3RyaW5nIHZhbHVlKTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDM1ZWZjNjYuLmFmOWJjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMt
MTAtMTYgIEFuZHJlIExvdXJlaXJvICA8YW5kcmUudmxAc2Ftc3VuZy5jb20+CisKKyAgICAgICAg
TW92ZSBUZXN0UnVubmVyOjpzZXRWYWx1ZUZvclVzZXIgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDM5OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0
RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluOgorCiAyMDEzLTEwLTEwICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4
IGF0dGVtcHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktp
dEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCmlu
ZGV4IGU3YWVhYTQuLjI1M2Y3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZj
eHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4
cG9ydHMuZGVmLmluCkBAIC00NTksMyArNDU5LDQgQEAgRVhQT1JUUwogICAgICAgICBzeW1ib2xX
aXRoUG9pbnRlcig/Zml4ZWRGb250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFCRUFCVkF0b21p
Y1N0cmluZ0BXVEZAQFc0VVNjcmlwdENvZGVAQEBaLCA/Zml4ZWRGb250RmFtaWx5QFNldHRpbmdz
QFdlYkNvcmVAQFFFQkFBRUJWQXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFopCiAg
ICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9mYW50YXN5Rm9udEZhbWlseUBTZXR0aW5nc0BXZWJD
b3JlQEBRQkVBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWiwgP2ZhbnRhc3lG
b250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFFQkFBRUJWQXRvbWljU3RyaW5nQFdURkBAVzRV
U2NyaXB0Q29kZUBAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9jdXJzaXZlRm9udEZh
bWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRQkVBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRD
b2RlQEBAWiwgP2N1cnNpdmVGb250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFFQkFBRUJWQXRv
bWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFopCisgICAgICAgIHN5bWJvbFdpdGhQb2lu
dGVyKD9zZXRWYWx1ZUZvclVzZXJASFRNTElucHV0RWxlbWVudEBXZWJDb3JlQEBRQUVYQUJWU3Ry
aW5nQFdURkBAQFosID9zZXRWYWx1ZUZvclVzZXJASW50ZXJuYWxzQFdlYkNvcmVAQFFBRVhQQVZF
bGVtZW50QDJAQUJWU3RyaW5nQFdURkBAQUFIQFopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggNzM5MDBk
NS4uZDAwMTU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTEwLTE2
ICBBbmRyZSBMb3VyZWlybyAgPGFuZHJlLnZsQHNhbXN1bmcuY29tPgorCisgICAgICAgIE1vdmUg
VGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyIHRvIEludGVybmFscworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzOTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsLmg6CisKIDIwMTMtMTAtMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBDb25zb2xpZGF0ZSBmaW5kU3RyaW5nIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbC5jcHAKaW5kZXggOWM2OGM5MS4uZjI2OTY4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmwuY3BwCkBAIC0yMzIsMTkgKzIzMiw2IEBAIGNvbnN0IFdlYkNvcmU6OlVSTCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmw6OnByb3Zpc2lvbmFsVVJMKGNvbnN0IEV2YXNfT2JqZWN0KiBlCiAg
ICAgcmV0dXJuIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnVybCgpOwogfQogCi12b2lkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAg
SlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOwotICAgIFdlYkNvcmU6OkVsZW1l
bnQqIGVsZW1lbnQgPSBXZWJDb3JlOjp0b0VsZW1lbnQodG9KUyhleGVjLCBub2RlT2JqZWN0KSk7
Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0gICAgV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKTsKLSAg
ICBpZiAoIWlucHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW5wdXRFbGVtZW50
LT5zZXRWYWx1ZUZvclVzZXIodmFsdWUpOwotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6c2V0RGVmZXJzTG9hZGluZyhFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBkZWZlcnMp
CiB7CiAgICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgcGFnZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbC5oCmluZGV4IDU4Y2Q0ODMuLjgzZGNlMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbC5oCkBAIC02OCw3ICs2OCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHN1
aXRhYmxlRFJURnJhbWVOYW1lKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiAgICAgc3Rh
dGljIGNvbnN0IFdlYkNvcmU6OlVSTCBwcm92aXNpb25hbFVSTChjb25zdCBFdmFzX09iamVjdCog
ZXdrRnJhbWUpOwogICAgIHN0YXRpYyBTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tGcmFtZSk7Ci0gICAgc3RhdGljIHZvaWQgc2V0VmFsdWVGb3JVc2VyKEpTQ29u
dGV4dFJlZiwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKICAg
ICBzdGF0aWMgdm9pZCBzZXREZWZlcnNMb2FkaW5nKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29s
IGRlZmVycyk7CiAgICAgc3RhdGljIHZvaWQgc2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdl
TG9hZGluZ1NldHRpbmcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgbG9hZHNTaXRlSWNvbnNJ
Z25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2VzKTsKICAgICBzdGF0aWMgdm9pZCBzZXRNaW5p
bXVtTG9naWNhbEZvbnRTaXplKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgc2l6ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKaW5kZXggZGMxMTUxMi4uZjcxYTgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDEzLTEwLTE2ICBBbmRyZSBMb3VyZWlybyAgPGFuZHJlLnZsQHNhbXN1bmcu
Y29tPgorCisgICAgICAgIE1vdmUgVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyIHRvIEludGVy
bmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQz
OTgKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHA6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmg6CisKIDIwMTMtMTAtMDkgIE1hcmlv
IFNhbmNoZXogUHJhZGEgIDxtYXJpby5wcmFkYUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbQVRL
XSBJbXBsZW1lbnQgbmV3IEFQSSBpbiBBdGtUZXh0OiBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29m
ZnNldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAppbmRleCBjOThmZDA2Li4yMzA1ODIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKQEAgLTQ3NiwyMiArNDc2LDYgQEAgYm9vbCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OmZpbmRTdHJpbmcoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
Y29uc3QgZ2NoYXIqIHQKICAgICByZXR1cm4gY29yZSh3ZWJWaWV3KS0+ZmluZFN0cmluZyhTdHJp
bmc6OmZyb21VVEY4KHRhcmdldFN0cmluZyksIGZpbmRPcHRpb25zKTsKIH0KIAotdm9pZCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICBKU0M6
OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9
IHRvRWxlbWVudCh0b0pTKGV4ZWMsIG5vZGVPYmplY3QpKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0g
ICAgICAgIHJldHVybjsKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlbGVt
ZW50LT50b0lucHV0RWxlbWVudCgpOwotICAgIGlmICghaW5wdXRFbGVtZW50KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhD
U3RyaW5nU2l6ZSh2YWx1ZSk7Ci0gICAgR093blB0cjxnY2hhcj4gdmFsdWVCdWZmZXIoc3RhdGlj
X2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyhidWZmZXJTaXplKSkpOwotICAgIEpTU3RyaW5nR2V0VVRG
OENTdHJpbmcodmFsdWUsIHZhbHVlQnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKLSAgICBpbnB1
dEVsZW1lbnQtPnNldFZhbHVlRm9yVXNlcihTdHJpbmc6OmZyb21VVEY4KHZhbHVlQnVmZmVyLmdl
dCgpKSk7Ci19Ci0KIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpyZWN0YW5nbGVGb3JT
ZWxlY3Rpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjYWlyb19yZWN0YW5nbGVfaW50X3QqIHJl
Y3RhbmdsZSkKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0ay5oCmluZGV4IDRmZDYyNTUuLjg2YjdmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5oCkBAIC02Niw3ICs2Niw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQXRrT2JqZWN0KiBnZXRG
b2N1c2VkQWNjZXNzaWJsZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgQXRr
T2JqZWN0KiBnZXRSb290QWNjZXNzaWJsZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBz
dGF0aWMgdm9pZCBsYXlvdXRGcmFtZShXZWJLaXRXZWJGcmFtZSopOwotICAgIHN0YXRpYyB2b2lk
IHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIEpTU3RyaW5nUmVmKTsK
ICAgICBzdGF0aWMgYm9vbCBzaG91bGRDbG9zZShXZWJLaXRXZWJGcmFtZSopOwogCiAgICAgLy8g
V2ViS2l0V2ViVmlldwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGU3YWRhMjkuLjhjMjYwYjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0xMC0xNiAgQW5kcmUg
TG91cmVpcm8gIDxhbmRyZS52bEBzYW1zdW5nLmNvbT4KKworICAgICAgICBNb3ZlIFRlc3RSdW5u
ZXI6OnNldFZhbHVlRm9yVXNlciB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAg
ICAgICAgKFRlc3RSdW5uZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVu
bmVyRWZsLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5j
cHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoK
KwogMjAxMy0xMC0xMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
RGVwcmVjYXRlIG9yIHJlbW92ZSBkZWxldGVBbGxWYWx1ZXMgZnVuY3Rpb25zOyB0aGVyZSBhcmUg
b25seSBhIGZldyBjYWxsIHNpdGVzIGxlZnQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAK
aW5kZXggNWMwZDAzYy4uNDg5ZTUyYSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
VGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAK
QEAgLTEzNzcsMjEgKzEzNzcsNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZQogICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYg
c2V0VmFsdWVGb3JVc2VyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQotewot
ICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRpb24KLSAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAy
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0KLSAgICBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdmFsdWUoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHko
Y29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24pKTsKLSAgICBBU1NFUlQoISpleGNlcHRp
b24pOwotCi0gICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5u
ZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIGNvbnRyb2xsZXItPnNl
dFZhbHVlRm9yVXNlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIHZhbHVlLmdldCgpKTsKLQotICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLX0KLQogc3RhdGljIEpTVmFs
dWVSZWYgc2V0Vmlld01vZGVNZWRpYUZlYXR1cmVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBh
cmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyBpbXBsZW1lbnRhdGlvbgpAQCAtMjE2OCw3ICsy
MTUzLDYgQEAgSlNTdGF0aWNGdW5jdGlvbiogVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKCkK
ICAgICAgICAgeyAic2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUiLCBzZXRVc2VEYXNo
Ym9hcmRDb21wYXRpYmlsaXR5TW9kZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFVz
ZXJTdHlsZVNoZWV0RW5hYmxlZCIsIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZENhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24iLCBzZXRVc2VyU3R5
bGVTaGVldExvY2F0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKLSAgICAgICAgeyAic2V0VmFsdWVGb3JV
c2VyIiwgc2V0VmFsdWVGb3JVc2VyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0Vmll
d01vZGVNZWRpYUZlYXR1cmUiLCBzZXRWaWV3TW9kZU1lZGlhRmVhdHVyZUNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgInNldFdlYlZpZXdFZGl0YWJsZSIsIHNldFdlYlZpZXdFZGl0YWJsZUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVy
Iiwgc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvVGVzdFJ1bm5lci5oCmluZGV4IDhjZGFjZDkuLjMyMTYwMWUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9UZXN0UnVubmVyLmgKQEAgLTExNCw3ICsxMTQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRV
c2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZShib29sIGZsYWcpOwogICAgIHZvaWQgc2V0VXNl
clN0eWxlU2hlZXRFbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpOwotICAgIHZvaWQgc2V0VmFsdWVGb3JVc2VyKEpT
Q29udGV4dFJlZiwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSk7CiAg
ICAgdm9pZCBzZXRWaWV3TW9kZU1lZGlhRmVhdHVyZShKU1N0cmluZ1JlZik7CiAgICAgdm9pZCBz
ZXRYU1NBdWRpdG9yRW5hYmxlZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0U3BhdGlhbE5hdmln
YXRpb25FbmFibGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZs
L1Rlc3RSdW5uZXJFZmwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJF
ZmwuY3BwCmluZGV4IDA3NDZlNTIuLmFhNjFkNWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9l
ZmwvVGVzdFJ1bm5lckVmbC5jcHAKQEAgLTI0NCwxMSArMjQ0LDYgQEAgdm9pZCBUZXN0UnVubmVy
OjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpCiAgICAgICAgIHNl
dFVzZXJTdHlsZVNoZWV0RW5hYmxlZCh0cnVlKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRW
YWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwg
SlNTdHJpbmdSZWYgdmFsdWUpCi17Ci0gICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRW
YWx1ZUZvclVzZXIoY29udGV4dCwgbm9kZU9iamVjdCwgdmFsdWUtPnN0cmluZygpKTsKLX0KLQog
dm9pZCBUZXN0UnVubmVyOjpzZXRWaWV3TW9kZU1lZGlhRmVhdHVyZShKU1N0cmluZ1JlZiBtb2Rl
KQogewogI2lmIEVOQUJMRShWSUVXX01PREVfQ1NTX01FRElBKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCmluZGV4IDI2NWZiNWMuLjA4NzY5MGUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKQEAgLTI3MSwxMSArMjcxLDYg
QEAgdm9pZCBUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVm
IHBhdGgpCiAgICAgICAgIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZCh0cnVlKTsKIH0KIAotdm9p
ZCBUZXN0UnVubmVyOjpzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFs
dWVSZWYgbm9kZU9iamVjdCwgSlNTdHJpbmdSZWYgdmFsdWUpCi17Ci0gICAgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrOjpzZXRWYWx1ZUZvclVzZXIoY29udGV4dCwgbm9kZU9iamVjdCwgdmFsdWUp
OwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKEpTU3RyaW5n
UmVmIG1vZGUpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogdmlldyA9IHdlYmtpdF93ZWJfZnJhbWVf
Z2V0X3dlYl92aWV3KG1haW5GcmFtZSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCmluZGV4IGE0NmQ0MjguLjdhOWE4ZjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9UZXN0UnVubmVyTWFjLm1tCkBAIC01OTIsMTYgKzU5Miw2IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKQogICAgIFtbV2Vi
UHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlv
bjp1cmxdOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKLXsK
LSAgICBET01FbGVtZW50ICplbGVtZW50ID0gW0RPTUVsZW1lbnQgX0RPTUVsZW1lbnRGcm9tSlND
b250ZXh0OmNvbnRleHQgdmFsdWU6bm9kZU9iamVjdF07Ci0gICAgaWYgKCFlbGVtZW50IHx8ICFb
ZWxlbWVudCBpc0tpbmRPZkNsYXNzOltET01IVE1MSW5wdXRFbGVtZW50IGNsYXNzXV0pCi0gICAg
ICAgIHJldHVybjsKLQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdmFsdWVDRiA9IGFkb3B0
Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdmFsdWUpKTsKLSAg
ICBbKERPTUhUTUxJbnB1dEVsZW1lbnQgKillbGVtZW50IHNldFZhbHVlRm9yVXNlcjooTlNTdHJp
bmcgKil2YWx1ZUNGLmdldCgpXTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRWaWV3TW9kZU1l
ZGlhRmVhdHVyZShKU1N0cmluZ1JlZiBtb2RlKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAppbmRleCAzZmIxYzVh
Li4zZmM0NjI2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5l
cldpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3Bw
CkBAIC02NjcsMjkgKzY2Nyw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRM
b2NhdGlvbihKU1N0cmluZ1JlZiBqc1VSTCkKICAgICBTeXNGcmVlU3RyaW5nKHJlc3VsdFBhdGhC
U1RSKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTVmFsdWVSZWYgZWxlbWVudCwgSlNTdHJpbmdSZWYgdmFsdWUpCi17Ci0gICAg
Q09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OwotICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZpZXco
JndlYlZpZXcpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0
ZT4gd2ViVmlld1ByaXZhdGUoUXVlcnksIHdlYlZpZXcpOwotICAgIGlmICghd2ViVmlld1ByaXZh
dGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIENPTVB0cjxJRE9NRWxlbWVudD4gZG9tRWxlbWVu
dDsKLSAgICBpZiAoRkFJTEVEKHdlYlZpZXdQcml2YXRlLT5lbGVtZW50RnJvbUpTKGNvbnRleHQs
IGVsZW1lbnQsICZkb21FbGVtZW50KSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENPTVB0cjxJ
RE9NSFRNTElucHV0RWxlbWVudD4gZG9tSW5wdXRFbGVtZW50OwotICAgIGlmIChGQUlMRUQoZG9t
RWxlbWVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01IVE1MSW5wdXRFbGVtZW50LCByZWludGVy
cHJldF9jYXN0PHZvaWQqKj4oJmRvbUlucHV0RWxlbWVudCkpKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgX2JzdHJfdCB2YWx1ZUJTVFIoSlNTdHJpbmdDb3B5QlNUUih2YWx1ZSksIGZhbHNlKTsK
LQotICAgIGRvbUlucHV0RWxlbWVudC0+c2V0VmFsdWVGb3JVc2VyKHZhbHVlQlNUUik7Ci19Ci0K
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoSlNTdHJpbmdSZWYgbW9k
ZSkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApp
bmRleCBlMjYyYjI1Li4yYmMwNGE4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTky
LDggKzkyLDYgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIC8vIFByaW50aW5nCiAgICAg
Ym9vbGVhbiBpc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlSW5kZXgpOwogCi0gICAgW1Bhc3NDb250
ZXh0XSB2b2lkIHNldFZhbHVlRm9yVXNlcihvYmplY3QgZWxlbWVudCwgRE9NU3RyaW5nIHZhbHVl
KTsKLQogICAgIC8vIFVzZXJDb250ZW50IHRlc3RpbmcuCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0
KERPTVN0cmluZyBzb3VyY2UsIGJvb2xlYW4gcnVuQXRTdGFydCwgYm9vbGVhbiBhbGxGcmFtZXMp
OwogICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXQoRE9NU3RyaW5nIHNvdXJjZSwgYm9vbGVhbiBh
bGxGcmFtZXMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggM2YyZDAzOC4uOTcyOTI0YyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0z
NjcsMTUgKzM2Nyw2IEBAIGJvb2wgVGVzdFJ1bm5lcjo6aXNQYWdlQm94VmlzaWJsZShpbnQgcGFn
ZUluZGV4KQogICAgIHJldHVybiBXS0J1bmRsZUlzUGFnZUJveFZpc2libGUoSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBtYWluRnJhbWUsIHBhZ2VJbmRleCk7CiB9CiAKLXZvaWQg
VGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVl
UmVmIGVsZW1lbnQsIEpTU3RyaW5nUmVmIHZhbHVlKQotewotICAgIGlmICghZWxlbWVudCB8fCAh
SlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIGVsZW1lbnQpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBXS1JldGFpblB0cjxXS0J1bmRsZU5vZGVIYW5kbGVSZWY+IG5vZGVIYW5kbGUoQWRvcHRXSywg
V0tCdW5kbGVOb2RlSGFuZGxlQ3JlYXRlKGNvbnRleHQsIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+
KGVsZW1lbnQpKSk7Ci0gICAgV0tCdW5kbGVOb2RlSGFuZGxlU2V0SFRNTElucHV0RWxlbWVudFZh
bHVlRm9yVXNlcihub2RlSGFuZGxlLmdldCgpLCB0b1dLKHZhbHVlKS5nZXQoKSk7Ci19Ci0KIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0QXVkaW9SZXN1bHQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFs
dWVSZWYgZGF0YSkKIHsKICAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IGF1ZGlvRGF0YShBZG9w
dFdLLCBXS0J1bmRsZUNyZWF0ZVdLRGF0YUZyb21VSW50OEFycmF5KEluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5idW5kbGUoKSwgY29udGV4dCwgZGF0YSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAzOGNlZjZiLi43MWU3
Yzc3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaApAQCAtMTU4LDggKzE1OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF1dGhl
bnRpY2F0aW9uVXNlcm5hbWUoSlNTdHJpbmdSZWYpOwogICAgIHZvaWQgc2V0QXV0aGVudGljYXRp
b25QYXNzd29yZChKU1N0cmluZ1JlZik7CiAKLSAgICB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0Nv
bnRleHRSZWYsIEpTVmFsdWVSZWYgZWxlbWVudCwgSlNTdHJpbmdSZWYgdmFsdWUpOwotCiAgICAg
Ly8gQXVkaW8gdGVzdGluZy4KICAgICB2b2lkIHNldEF1ZGlvUmVzdWx0KEpTQ29udGV4dFJlZiwg
SlNWYWx1ZVJlZiBkYXRhKTsKIAotLSAKMS44LjEuMgoK
</data>

          </attachment>
      

    </bug>

</bugzilla>