<?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>89217</bug_id>
          
          <creation_ts>2012-06-15 08:16:02 -0700</creation_ts>
          <short_desc>Speech JavaScript API: SpeechRecognition should hook up with ActiveDOMObject more</short_desc>
          <delta_ts>2012-06-21 03:23:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>80261</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Wennborg">hans</reporter>
          <assigned_to name="Hans Wennborg">hans</assigned_to>
          <cc>abarth</cc>
    
    <cc>primiano</cc>
    
    <cc>satish</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>650204</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-06-15 08:16:02 -0700</bug_when>
    <thetext>Speech JavaScript API: SpeechRecognition should hook up with ActiveDOMObject more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650206</commentid>
    <comment_count>1</comment_count>
      <attachid>147826</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-06-15 08:18:53 -0700</bug_when>
    <thetext>Created attachment 147826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650210</commentid>
    <comment_count>2</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-06-15 08:19:46 -0700</bug_when>
    <thetext>I&apos;ll change the Chromium plumbing in the next patch so that it doesn&apos;t keep a reference to the SpeechRecognitionObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650300</commentid>
    <comment_count>3</comment_count>
      <attachid>147826</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2012-06-15 10:21:39 -0700</bug_when>
    <thetext>Comment on attachment 147826
Patch

The change looks fine. Can we add a layout test, perhaps one that uses a child iframe and navigates in that to verify that speech recognition is aborted?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651495</commentid>
    <comment_count>4</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-06-18 10:15:26 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 147826 [details])
&gt; The change looks fine. Can we add a layout test, perhaps one that uses a child iframe and navigates in that to verify that speech recognition is aborted?

Coming up. As usual, the test is way more complicated than the code :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651497</commentid>
    <comment_count>5</comment_count>
      <attachid>148120</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-06-18 10:15:57 -0700</bug_when>
    <thetext>Created attachment 148120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652489</commentid>
    <comment_count>6</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-06-19 08:42:44 -0700</bug_when>
    <thetext>After discussing with Satish, trying to rebuild the mock object a little bit so that there is no need for the setWaitAfterStart() function.

New patch coming up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652490</commentid>
    <comment_count>7</comment_count>
      <attachid>148344</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-06-19 08:43:01 -0700</bug_when>
    <thetext>Created attachment 148344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652755</commentid>
    <comment_count>8</comment_count>
      <attachid>148344</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2012-06-19 13:46:10 -0700</bug_when>
    <thetext>Comment on attachment 148344
Patch

The change itself looks good. It would be shorter to change all &apos;hasBeenAborted/hasXxxxxBeenAborted&apos; to &apos;wasAborted&apos; style :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653300</commentid>
    <comment_count>9</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-06-20 02:29:33 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 148344 [details])
&gt; The change itself looks good. It would be shorter to change all &apos;hasBeenAborted/hasXxxxxBeenAborted&apos; to &apos;wasAborted&apos; style :)
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653301</commentid>
    <comment_count>10</comment_count>
      <attachid>148526</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-06-20 02:29:52 -0700</bug_when>
    <thetext>Created attachment 148526
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653372</commentid>
    <comment_count>11</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-06-20 05:51:04 -0700</bug_when>
    <thetext>Adam, would you like to take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653587</commentid>
    <comment_count>12</comment_count>
      <attachid>148526</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-20 10:15:28 -0700</bug_when>
    <thetext>Comment on attachment 148526
Patch

LGTM!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654340</commentid>
    <comment_count>13</comment_count>
      <attachid>148526</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-21 02:53:56 -0700</bug_when>
    <thetext>Comment on attachment 148526
Patch

Rejecting attachment 148526 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
eLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/fast/speech/scripted/navigate-away-expected.txt
patching file LayoutTests/fast/speech/scripted/navigate-away-iframe-expected.txt
patching file LayoutTests/fast/speech/scripted/navigate-away-iframe.html
patching file LayoutTests/fast/speech/scripted/navigate-away.html

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Adam Barth&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/13030049</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654349</commentid>
    <comment_count>14</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-06-21 03:23:35 -0700</bug_when>
    <thetext>Committed r120913: &lt;http://trac.webkit.org/changeset/120913&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147826</attachid>
            <date>2012-06-15 08:18:53 -0700</date>
            <delta_ts>2012-06-18 10:15:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89217-20120615161852.patch</filename>
            <type>text/plain</type>
            <size>4182</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzU1NzBkZGMyZTI0MTYy
MWE3ODI2NjNiNTgxNGVmNDUyMGVkODE4ZC4uMzU3OTMxOTlhNjA1Zjc4MTAwMDAxODU3MDZlZWM0
NDRlOTVhZTU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA2LTE1ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIEphdmFTY3Jp
cHQgQVBJOiBTcGVlY2hSZWNvZ25pdGlvbiBzaG91bGQgaG9vayB1cCB3aXRoIEFjdGl2ZURPTU9i
amVjdCBtb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFByZXZpb3VzbHksIHRoZSBTcGVlY2hSZWNvZ25pdGlvbiB3YXMga2VwdCBhbGl2ZSB3aGlsZSB3
YWl0aW5nIGZvcgorICAgICAgICBwZW5kaW5nIGV2ZW50cyBieSBtYWtpbmcgdGhlIGVtYmVkZGVy
IGhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdC4KKyAgICAgICAgV2Ugc2hvdWxkIGRvIHRo
aXMgYnkgdXNpbmcgQWN0aXZlRE9NT2JqZWN0J3Mgc2V0UGVuZGluZ0FjdGl2aXR5KCkKKyAgICAg
ICAgaW5zdGVhZC4KKworICAgICAgICBBbHNvLCBpbXBsZW1lbnQgQWN0aXZlRE9NT2JqZWN0Ojpz
dG9wKCkgdG8gZ2V0IG5vdGlmaWVkIHdoZW4gdGhlIHVzZXIKKyAgICAgICAgbW92ZXMgYXdheSBm
cm9tIHRoZSBwYWdlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywganVzdCBjaGFuZ2luZyB0aGUg
bWVjaGFuaXNtIGZvciBrZWVwaW5nIHRoZSBvYmplY3QgYWxpdmUuCisKKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b246OmRpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6c3RvcCk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvbi5oOgorICAgICAgICAoU3BlZWNoUmVjb2duaXRpb24pOgorCiAyMDEyLTA2LTE1ICBT
YW1pIEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gQWxsb3cgc2Nyb2xsaW5nIG5vbi1yb290IGxheWVycyBpbiB0aGUgY29tcG9zaXRvciB0aHJl
YWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uLmNwcAppbmRleCA4YmRjMzUzYzgxYWI5NGJmMGIyM2ZmZGYyZDQ4NzE4Y2VhMWQ4YjcyLi4z
YzdkODAwNzI4MzA5NTFmNjhmNmE2N2RlMjg3ZWU3Mjg5NjU2MDcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCkBAIC00Niw3
ICs0NiwxMCBAQCBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uPiBTcGVlY2hSZWNvZ25pdGlv
bjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiAKIHZvaWQgU3BlZWNoUmVjb2duaXRp
b246OnN0YXJ0KCkKIHsKLSAgICBBU1NFUlQobV9jb250cm9sbGVyKTsgLy8gRklYTUU6IFNwZWMg
c2hvdWxkIHNheSB3aGF0IHRvIGRvIGlmIHdlIGFyZSBhbHJlYWR5IHN0YXJ0ZWQuCisgICAgQVNT
RVJUKG1fY29udHJvbGxlcik7CisgICAgLy8gRklYTUU6IFNwZWMgc2hvdWxkIHNheSB3aGF0IHRv
IGRvIGlmIHdlIGFyZSBhbHJlYWR5IHN0YXJ0ZWQuCisKKyAgICBzZXRQZW5kaW5nQWN0aXZpdHko
dGhpcyk7CiAgICAgbV9jb250cm9sbGVyLT5zdGFydCh0aGlzLCBtX2dyYW1tYXJzLmdldCgpLCBt
X2xhbmcsIG1fY29udGludW91cyk7CiB9CiAKQEAgLTEyMSw2ICsxMjQsNyBAQCB2b2lkIFNwZWVj
aFJlY29nbml0aW9uOjpkaWRTdGFydCgpCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uOjpkaWRFbmQo
KQogewogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW5kRXZl
bnQsIC8qY2FuQnViYmxlPSovZmFsc2UsIC8qY2FuY2VsYWJsZT0qL2ZhbHNlKSk7CisgICAgdW5z
ZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU3BlZWNo
UmVjb2duaXRpb246OmludGVyZmFjZU5hbWUoKSBjb25zdApAQCAtMTMzLDYgKzEzNywxMiBAQCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBTcGVlY2hSZWNvZ25pdGlvbjo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwogfQogCit2b2lkIFNwZWVjaFJlY29nbml0aW9uOjpzdG9wKCkKK3sKKyAg
ICBpZiAoaGFzUGVuZGluZ0FjdGl2aXR5KCkpCisgICAgICAgIGFib3J0KCk7Cit9CisKIFNwZWVj
aFJlY29nbml0aW9uOjpTcGVlY2hSZWNvZ25pdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX2dy
YW1tYXJzKFNwZWVjaEdyYW1tYXJMaXN0OjpjcmVhdGUoKSkgLy8gRklYTUU6IFRoZSBzcGVjIGlz
IG5vdCBjbGVhciBvbiB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGdyYW1tYXJzIGF0dHJpYnV0
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
bi5oCmluZGV4IDNmYzI0NDE2NmUzMzhjM2IwZjYyY2ZjZjAyZjA4Yjg1YTVkNTU3MDMuLjgzOWI2
YmRlMGVhYTg2YjEyZjBhYTYwMDRkYjg1YjAyNGRhYzVmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uaApAQCAtNDksMTIgKzQ5LDEx
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbj4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB+U3BlZWNoUmVjb2duaXRpb24oKTsK
IAorICAgIC8vIEF0dHJpYnV0ZXMuCiAgICAgUGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFyTGlzdD4g
Z3JhbW1hcnMoKSB7IHJldHVybiBtX2dyYW1tYXJzOyB9CiAgICAgdm9pZCBzZXRHcmFtbWFycyhQ
YXNzUmVmUHRyPFNwZWVjaEdyYW1tYXJMaXN0PiBncmFtbWFycykgeyBtX2dyYW1tYXJzID0gZ3Jh
bW1hcnM7IH0KLQogICAgIFN0cmluZyBsYW5nKCkgeyByZXR1cm4gbV9sYW5nOyB9CiAgICAgdm9p
ZCBzZXRMYW5nKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX2xhbmcgPSBsYW5nOyB9Ci0KICAgICBi
b29sIGNvbnRpbnVvdXMoKSB7IHJldHVybiBtX2NvbnRpbnVvdXM7IH0KICAgICB2b2lkIHNldENv
bnRpbnVvdXMoYm9vbCBjb250aW51b3VzKSB7IG1fY29udGludW91cyA9IGNvbnRpbnVvdXM7IH0K
IApAQCAtNzcsMTAgKzc2LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFN0YXJ0KCk7CiAgICAg
dm9pZCBkaWRFbmQoKTsKIAotICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgLy8gRXZlbnRUYXJnZXQu
CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsKIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdC4K
KyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOworCiAgICAgdXNpbmcgUmVmQ291bnRl
ZDxTcGVlY2hSZWNvZ25pdGlvbj46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFNwZWVjaFJl
Y29nbml0aW9uPjo6ZGVyZWY7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148120</attachid>
            <date>2012-06-18 10:15:57 -0700</date>
            <delta_ts>2012-06-19 08:42:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89217-20120618181556.patch</filename>
            <type>text/plain</type>
            <size>17048</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU4MWUxNGM2MDBlNThl
MjRjNDlkNTdmYzZiN2VmM2MzZTVkYjJmZS4uODFiZmU4MDZlOGY3OGJkNWIyMmZlNWNiMDVjNjQ3
YTczMTExYjljMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA2LTE4ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIEphdmFTY3Jp
cHQgQVBJOiBTcGVlY2hSZWNvZ25pdGlvbiBzaG91bGQgaG9vayB1cCB3aXRoIEFjdGl2ZURPTU9i
amVjdCBtb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFByZXZpb3VzbHksIHRoZSBTcGVlY2hSZWNvZ25pdGlvbiB3YXMga2VwdCBhbGl2ZSB3aGlsZSB3
YWl0aW5nIGZvcgorICAgICAgICBwZW5kaW5nIGV2ZW50cyBieSBtYWtpbmcgdGhlIGVtYmVkZGVy
IGhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdC4KKyAgICAgICAgV2Ugc2hvdWxkIGRvIHRo
aXMgYnkgdXNpbmcgQWN0aXZlRE9NT2JqZWN0J3Mgc2V0UGVuZGluZ0FjdGl2aXR5KCkgaW5zdGVh
ZC4KKworICAgICAgICBBbHNvLCBvdmVycmlkZSBBY3RpdmVET01PYmplY3Q6OnN0b3AoKSB0byBn
ZXQgbm90aWZpZWQgd2hlbiB0aGUgdXNlcgorICAgICAgICBsZWF2ZXMgdGhlIHBhZ2UuCisKKyAg
ICAgICAgVGVzdHM6IGZhc3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3YXktaWZyYW1lLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3YXkuaHRt
bAorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb246OnN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uOjpkaWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb246OnN0b3ApOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uaDoKKyAgICAgICAgKFNwZWVjaFJlY29nbml0aW9u
KToKKwogMjAxMi0wNi0xOCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVuYW1lIFVua25vd24gdG8gT3RoZXIgaW4gTmF0
aXZlIGhlYXAgc25hcHNob3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKaW5kZXggOGJkYzM1M2M4MWFiOTRiZjBiMjNmZmRmMmQ0
ODcxOGNlYTFkOGI3Mi4uM2M3ZDgwMDcyODMwOTUxZjY4ZjZhNjdkZTI4N2VlNzI4OTY1NjA3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uLmNwcApAQCAtNDYsNyArNDYsMTAgQEAgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbj4g
U3BlZWNoUmVjb2duaXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KgogCiB2b2lk
IFNwZWVjaFJlY29nbml0aW9uOjpzdGFydCgpCiB7Ci0gICAgQVNTRVJUKG1fY29udHJvbGxlcik7
IC8vIEZJWE1FOiBTcGVjIHNob3VsZCBzYXkgd2hhdCB0byBkbyBpZiB3ZSBhcmUgYWxyZWFkeSBz
dGFydGVkLgorICAgIEFTU0VSVChtX2NvbnRyb2xsZXIpOworICAgIC8vIEZJWE1FOiBTcGVjIHNo
b3VsZCBzYXkgd2hhdCB0byBkbyBpZiB3ZSBhcmUgYWxyZWFkeSBzdGFydGVkLgorCisgICAgc2V0
UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogICAgIG1fY29udHJvbGxlci0+c3RhcnQodGhpcywgbV9n
cmFtbWFycy5nZXQoKSwgbV9sYW5nLCBtX2NvbnRpbnVvdXMpOwogfQogCkBAIC0xMjEsNiArMTI0
LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvbjo6ZGlkU3RhcnQoKQogdm9pZCBTcGVlY2hSZWNv
Z25pdGlvbjo6ZGlkRW5kKCkKIHsKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmVuZEV2ZW50LCAvKmNhbkJ1YmJsZT0qL2ZhbHNlLCAvKmNhbmNlbGFibGU9Ki9m
YWxzZSkpOworICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogfQogCiBjb25zdCBBdG9t
aWNTdHJpbmcmIFNwZWVjaFJlY29nbml0aW9uOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKQEAgLTEz
Myw2ICsxMzcsMTIgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU3BlZWNoUmVjb2duaXRpb246
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiBBY3RpdmVET01PYmpl
Y3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIH0KIAordm9pZCBTcGVlY2hSZWNvZ25pdGlv
bjo6c3RvcCgpCit7CisgICAgaWYgKGhhc1BlbmRpbmdBY3Rpdml0eSgpKQorICAgICAgICBhYm9y
dCgpOworfQorCiBTcGVlY2hSZWNvZ25pdGlvbjo6U3BlZWNoUmVjb2duaXRpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0
aGlzKQogICAgICwgbV9ncmFtbWFycyhTcGVlY2hHcmFtbWFyTGlzdDo6Y3JlYXRlKCkpIC8vIEZJ
WE1FOiBUaGUgc3BlYyBpcyBub3QgY2xlYXIgb24gdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBn
cmFtbWFycyBhdHRyaWJ1dGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb24uaAppbmRleCAzZmMyNDQxNjZlMzM4YzNiMGY2MmNmY2YwMmYwOGI4
NWE1ZDU1NzAzLi44MzliNmJkZTBlYWE4NmIxMmYwYWE2MDA0ZGI4NWIwMjRkYWM1ZjM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmgK
QEAgLTQ5LDEyICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNo
UmVjb2duaXRpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgflNwZWVj
aFJlY29nbml0aW9uKCk7CiAKKyAgICAvLyBBdHRyaWJ1dGVzLgogICAgIFBhc3NSZWZQdHI8U3Bl
ZWNoR3JhbW1hckxpc3Q+IGdyYW1tYXJzKCkgeyByZXR1cm4gbV9ncmFtbWFyczsgfQogICAgIHZv
aWQgc2V0R3JhbW1hcnMoUGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFyTGlzdD4gZ3JhbW1hcnMpIHsg
bV9ncmFtbWFycyA9IGdyYW1tYXJzOyB9Ci0KICAgICBTdHJpbmcgbGFuZygpIHsgcmV0dXJuIG1f
bGFuZzsgfQogICAgIHZvaWQgc2V0TGFuZyhjb25zdCBTdHJpbmcmIGxhbmcpIHsgbV9sYW5nID0g
bGFuZzsgfQotCiAgICAgYm9vbCBjb250aW51b3VzKCkgeyByZXR1cm4gbV9jb250aW51b3VzOyB9
CiAgICAgdm9pZCBzZXRDb250aW51b3VzKGJvb2wgY29udGludW91cykgeyBtX2NvbnRpbnVvdXMg
PSBjb250aW51b3VzOyB9CiAKQEAgLTc3LDEwICs3NiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRTdGFydCgpOwogICAgIHZvaWQgZGlkRW5kKCk7CiAKLSAgICAvLyBFdmVudFRhcmdldAorICAg
IC8vIEV2ZW50VGFyZ2V0LgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZh
Y2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREU7CiAKKyAgICAvLyBB
Y3RpdmVET01PYmplY3QuCisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKKwogICAg
IHVzaW5nIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb24+OjpyZWY7CiAgICAgdXNpbmcgUmVm
Q291bnRlZDxTcGVlY2hSZWNvZ25pdGlvbj46OmRlcmVmOwogCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDE5YTBhMTM4NGJmOTgyNWFjNjRlMGYx
YmQ2ZDFmYzM1ZmQwNzcyNy4uZTk4OGE0YzhhN2ViMDFlNGEzNDg5NjVhM2RhMDI2OTlhOTNjYzMy
OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI4IEBACisyMDEyLTA2LTE4ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgU3BlZWNoIEphdmFTY3JpcHQgQVBJOiBTcGVlY2hSZWNvZ25pdGlvbiBz
aG91bGQgaG9vayB1cCB3aXRoIEFjdGl2ZURPTU9iamVjdCBtb3JlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTIxNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtZXRob2RzIGZvciBjaGVja2luZyB3
aGV0aGVyIHRoZSBtb2NrIHNwZWVjaCByZWNvZ25pdGlvbiB3YXMKKyAgICAgICAgYWJvcnRlZC4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxl
cik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzTW9ja1NwZWVjaFJlY29nbml0
aW9uQmVlbkFib3J0ZWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tT
cGVlY2hSZWNvZ25pdGlvbldhaXRBZnRlclN0YXJ0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVl
Y2hSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjpzdGFy
dCk6CisgICAgICAgIChNb2NrV2ViU3BlZWNoUmVjb2duaXplcjo6YWJvcnQpOgorICAgICAgICAo
TW9ja1dlYlNwZWVjaFJlY29nbml6ZXI6Ok1vY2tXZWJTcGVlY2hSZWNvZ25pemVyKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5oOgor
ICAgICAgICAoTW9ja1dlYlNwZWVjaFJlY29nbml6ZXI6OnNldFdhaXRBZnRlclN0YXJ0KToKKyAg
ICAgICAgKE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjpoYXNCZWVuQWJvcnRlZCk6CisgICAgICAg
IChNb2NrV2ViU3BlZWNoUmVjb2duaXplcik6CisKIDIwMTItMDYtMTcgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgZ2FyZGVuLW8tbWF0aWMgJ1Jlc3Vs
dHMnIHBhbmVsIGlzIGJyb2tlbiBmb3IgdGhlIEFwcGxlIHBsYXRmb3JtCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggMWY2NGQ2NWFmZGRiZTgzYjVkMWZmYjVlZjhjYzExOTc1YzE4MWZmYi4uZDIxOWVkYmU1MTY5
Y2NmMzg4ZWFjYTBhMjM5MDc2NjE1YmQwODM0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTE4LDYgKzEx
OCw4IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcihUZXN0U2hl
bGwqIHNoZWxsKQogI2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCiAgICAgYmluZE1ldGhvZCgi
YWRkTW9ja1NwZWVjaFJlY29nbml0aW9uUmVzdWx0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjph
ZGRNb2NrU3BlZWNoUmVjb2duaXRpb25SZXN1bHQpOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tT
cGVlY2hSZWNvZ25pdGlvbkVycm9yIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3Bl
ZWNoUmVjb2duaXRpb25FcnJvcik7CisgICAgYmluZE1ldGhvZCgiaGFzTW9ja1NwZWVjaFJlY29n
bml0aW9uQmVlbkFib3J0ZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc01vY2tTcGVlY2hS
ZWNvZ25pdGlvbkJlZW5BYm9ydGVkKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRNb2NrU3BlZWNoUmVj
b2duaXRpb25XYWl0QWZ0ZXJTdGFydCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1Nw
ZWVjaFJlY29nbml0aW9uV2FpdEFmdGVyU3RhcnQpOwogI2VuZGlmCiAgICAgYmluZE1ldGhvZCgi
YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFk
ZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KTsKICAgICBiaW5kTWV0aG9kKCJhZGRVc2VyU2Ny
aXB0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0KTsKQEAgLTE5NjYsNiAr
MTk2OCwyMyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoUmVjb2du
aXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVudExpc3QmCiAgICAgaWYgKE1vY2tXZWJTcGVlY2hS
ZWNvZ25pemVyKiByZWNvZ25pemVyID0gbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+bW9ja1NwZWVj
aFJlY29nbml6ZXIoKSkKICAgICAgICAgcmVjb2duaXplci0+c2V0RXJyb3IoYXJndW1lbnRzWzBd
LnRvSW50MzIoKSwgY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sxXSkpOwogfQorCit2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpoYXNNb2NrU3BlZWNoUmVjb2duaXRpb25CZWVuQWJv
cnRlZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAg
cmVzdWx0LT5zZXQoZmFsc2UpOworICAgIGlmIChNb2NrV2ViU3BlZWNoUmVjb2duaXplciogcmVj
b2duaXplciA9IG1fc2hlbGwtPndlYlZpZXdIb3N0KCktPm1vY2tTcGVlY2hSZWNvZ25pemVyKCkp
CisgICAgICAgIHJlc3VsdC0+c2V0KHJlY29nbml6ZXItPmhhc0JlZW5BYm9ydGVkKCkpOworfQor
Cit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoUmVjb2duaXRpb25XYWl0
QWZ0ZXJTdGFydChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCog
cmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgIGlmIChhcmd1bWVudHMuc2l6
ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzQm9vbCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIqIHJlY29nbml6ZXIgPSBtX3NoZWxsLT53ZWJW
aWV3SG9zdCgpLT5tb2NrU3BlZWNoUmVjb2duaXplcigpKQorICAgICAgICByZWNvZ25pemVyLT5z
ZXRXYWl0QWZ0ZXJTdGFydChhcmd1bWVudHNbMF0udmFsdWUuYm9vbFZhbHVlKTsKK30KICNlbmRp
ZgogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzdGFydFNwZWVjaElucHV0KGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRl
eCA1YTg3MjkzODg4N2EyYjIxMTYxMGI4YzZjNjUxYmUxYjZlYTlhNTViLi5mZTVhNTQ3YWJiYTA1
MzA5NTE4MTE1MWE4MWVmOWU1Y2FjNjM3NzcxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTM3NSw2ICszNzUsOCBA
QCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKICAgICB2b2lkIGFkZE1vY2tT
cGVlY2hSZWNvZ25pdGlvblJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CiAgICAgdm9pZCBzZXRNb2NrU3BlZWNoUmVjb2duaXRpb25FcnJvcihjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBoYXNNb2NrU3BlZWNoUmVjb2duaXRp
b25CZWVuQWJvcnRlZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAg
dm9pZCBzZXRNb2NrU3BlZWNoUmVjb2duaXRpb25XYWl0QWZ0ZXJTdGFydChjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAjZW5kaWYKICAgICB2b2lkIHN0YXJ0U3BlZWNoSW5w
dXQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5j
cHAKaW5kZXggYjUzZTE3MDFmNTI2MWEwZDczYmUyYjY4Nzg4YmI5OTgyYjAyNDliNC4uOTcxMTNl
OWRlOWM5NDE3MWM1ZDg4MmU1NjZjOWU5MDU3ZmMyZWI0NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmNwcApA
QCAtMTExLDEwICsxMTEsMTYgQEAgUGFzc093blB0cjxNb2NrV2ViU3BlZWNoUmVjb2duaXplcj4g
TW9ja1dlYlNwZWVjaFJlY29nbml6ZXI6OmNyZWF0ZSgpCiAKIHZvaWQgTW9ja1dlYlNwZWVjaFJl
Y29nbml6ZXI6OnN0YXJ0KGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJiBoYW5kbGUs
IGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uUGFyYW1zJiBwYXJhbXMsIFdlYlNwZWVjaFJlY29n
bml6ZXJDbGllbnQqIGNsaWVudCkKIHsKKyAgICBtX2hhc0JlZW5BYm9ydGVkID0gZmFsc2U7CiAg
ICAgbV9oYW5kbGUgPSBoYW5kbGU7CiAgICAgbV9jbGllbnQgPSBjbGllbnQ7CiAKICAgICBwb3N0
VGFzayhuZXcgQ2xpZW50Q2FsbFRhc2sodGhpcywgJldlYlNwZWVjaFJlY29nbml6ZXJDbGllbnQ6
OmRpZFN0YXJ0KSk7CisgICAgaWYgKG1fd2FpdEFmdGVyU3RhcnQpIHsKKyAgICAgICAgbV93YWl0
QWZ0ZXJTdGFydCA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgcG9zdFRh
c2sobmV3IENsaWVudENhbGxUYXNrKHRoaXMsICZXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50Ojpk
aWRTdGFydEF1ZGlvKSk7CiAgICAgcG9zdFRhc2sobmV3IENsaWVudENhbGxUYXNrKHRoaXMsICZX
ZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50OjpkaWRTdGFydFNvdW5kKSk7CiAgICAgcG9zdFRhc2so
bmV3IENsaWVudENhbGxUYXNrKHRoaXMsICZXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50OjpkaWRT
dGFydFNwZWVjaCkpOwpAQCAtMTUwLDggKzE1Niw5IEBAIHZvaWQgTW9ja1dlYlNwZWVjaFJlY29n
bml6ZXI6OmFib3J0KGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJiBoYW5kbGUsIFdl
CiAgICAgbV9oYW5kbGUgPSBoYW5kbGU7CiAgICAgbV9jbGllbnQgPSBjbGllbnQ7CiAKLSAgICAv
LyBGSVhNRTogSW1wbGVtZW50LgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG1fdGFz
a0xpc3QucmV2b2tlQWxsKCk7CisgICAgbV9oYXNCZWVuQWJvcnRlZCA9IHRydWU7CisgICAgcG9z
dFRhc2sobmV3IENsaWVudENhbGxUYXNrKHRoaXMsICZXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50
OjpkaWRFbmQpKTsKIH0KIAogdm9pZCBNb2NrV2ViU3BlZWNoUmVjb2duaXplcjo6YWRkTW9ja1Jl
c3VsdChjb25zdCBXZWJTdHJpbmcmIHRyYW5zY3JpcHQsIGZsb2F0IGNvbmZpZGVuY2UpCkBAIC0x
NjgsNiArMTc1LDggQEAgdm9pZCBNb2NrV2ViU3BlZWNoUmVjb2duaXplcjo6c2V0RXJyb3IoaW50
IGNvZGUsIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKIH0KIAogTW9ja1dlYlNwZWVjaFJlY29n
bml6ZXI6Ok1vY2tXZWJTcGVlY2hSZWNvZ25pemVyKCkKKyAgICA6IG1faGFzQmVlbkFib3J0ZWQo
ZmFsc2UpCisgICAgLCBtX3dhaXRBZnRlclN0YXJ0KGZhbHNlKQogewogfQogCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIu
aAppbmRleCA5Mzk0OTc2ODY1NmZhNjY4ZTI1OWI1NjgyNjZhNDdiMTA5NTg1MmFmLi5iMDQ4NDA4
N2Y2MWJmZDI3Y2M1MDYxMzA0N2NkZTEwMjY0NzhjZWY3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5oCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmgKQEAgLTUz
LDYgKzUzLDggQEAgcHVibGljOgogICAgIC8vIE1ldGhvZHMgYWNjZXNzZWQgYnkgbGF5b3V0IHRl
c3RzOgogICAgIHZvaWQgYWRkTW9ja1Jlc3VsdChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgdHJh
bnNjcmlwdCwgZmxvYXQgY29uZmlkZW5jZSk7CiAgICAgdm9pZCBzZXRFcnJvcihpbnQgY29kZSwg
Y29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgc2V0V2FpdEFmdGVy
U3RhcnQoYm9vbCB3YWl0QWZ0ZXJTdGFydCkgeyBtX3dhaXRBZnRlclN0YXJ0ID0gd2FpdEFmdGVy
U3RhcnQ7IH0KKyAgICBib29sIGhhc0JlZW5BYm9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9oYXNC
ZWVuQWJvcnRlZDsgfQogCiAgICAgVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFz
a0xpc3Q7IH0KICAgICBXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml6ZXJDbGllbnQqIGNsaWVudCgp
IHsgcmV0dXJuIG1fY2xpZW50OyB9CkBAIC02Niw2ICs2OCw4IEBAIHByaXZhdGU6CiAgICAgV2Vi
S2l0OjpXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50KiBtX2NsaWVudDsKICAgICBWZWN0b3I8V2Vi
S2l0OjpXZWJTdHJpbmc+IG1fbW9ja1RyYW5zY3JpcHRzOwogICAgIFZlY3RvcjxmbG9hdD4gbV9t
b2NrQ29uZmlkZW5jZXM7CisgICAgYm9vbCBtX2hhc0JlZW5BYm9ydGVkOworICAgIGJvb2wgbV93
YWl0QWZ0ZXJTdGFydDsKIH07CiAKICNlbmRpZiAvLyBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDhkODM1ZjM0NmZjMjJiYTQzYjNlZGNlNjU2ZmRjYWY2NTY4NzA2MmEuLmUwMDAzMTMx
ZWM0NTJiYjQyYmZhNjFmNzJhMGRkZWI0NWFhZjQ0MDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAxMi0wNi0xOCAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFNwZWVjaCBKYXZhU2NyaXB0IEFQSTogU3BlZWNoUmVjb2duaXRpb24gc2hvdWxkIGhvb2sgdXAg
d2l0aCBBY3RpdmVET01PYmplY3QgbW9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODkyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0byBjaGVjayB0aGF0IHNwZWVjaCBy
ZWNvZ25pdGlvbiBnZXRzIGFib3J0ZWQgd2hlbgorICAgICAgICB0aGUgcGFnZSBuYXZpZ2F0ZXMg
YXdheS4KKworICAgICAgICAqIGZhc3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3YXktZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9zY3JpcHRlZC9uYXZpZ2F0
ZS1hd2F5LWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc3BlZWNo
L3NjcmlwdGVkL25hdmlnYXRlLWF3YXktaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3YXkuaHRtbDogQWRkZWQuCisKIDIwMTItMDYt
MTIgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21p
dW1dIGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9zcGVlY2gtcmVjb2duaXRpb24tZXZlbnQtY29u
c3RydWN0b3IuaHRtbCBpcyBmYWlsaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Nw
ZWVjaC9zY3JpcHRlZC9uYXZpZ2F0ZS1hd2F5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3YXktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI1ZTY3MWY0MDVhZWM5YWMwNmNhYTY5MGI5NzQwM2ZkZTJkYmZiZWIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9uYXZpZ2F0ZS1hd2F5LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUZXN0IGJlaGF2aW91ciB3aGVuIG5hdmlnYXRpbmcg
YXdheSBmcm9tIGEgcGFnZSB1c2luZyB0aGUgU3BlZWNoIEphdmFTY3JpcHQgQVBJCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUaGUgaWZyYW1lIHdhcyBsb2FkZWQuCitQQVNTICd3
ZWJraXRTcGVlY2hSZWNvZ25pdGlvbicgaW4gc2VsZiBpcyB0cnVlCitQQVNTIHdlYmtpdFNwZWVj
aFJlY29nbml0aW9uID09IG51bGwgaXMgZmFsc2UKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIu
aGFzTW9ja1NwZWVjaFJlY29nbml0aW9uQmVlbkFib3J0ZWQoKSBpcyBmYWxzZQoraWZyYW1lOiBD
cmVhdGVkIFNwZWVjaFJlY29nbml0aW9uCitpZnJhbWU6IGNhbGxpbmcgc3RhcnQoKQoraWZyYW1l
OiBvbnN0YXJ0CitpZnJhbWU6IG5hdmlnYXRpbmcgYXdheQorVGhlIGlmcmFtZSB3YXMgbmF2aWdh
dGVkIGF3YXkuCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc01vY2tTcGVlY2hSZWNvZ25p
dGlvbkJlZW5BYm9ydGVkKCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
L3NjcmlwdGVkL25hdmlnYXRlLWF3YXktaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3YXktaWZyYW1lLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zY2Y1Mzg5OGI2ZmJkOGY3MWYwZGEyZmIzNGU5ZDZjNTVjMDY4ZDYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvbmF2aWdhdGUt
YXdheS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK1RoaXMgZmlsZSBpcyBtZWFu
dCB0byBiZSB1c2VkIGFzIHBhcnQgb2YgdGhlIG5hdmlnYXRlLWF3YXkuaHRtbCB0ZXN0LgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvbmF2aWdhdGUtYXdheS1p
ZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3
YXktaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzc0NzRjZWY1YWFmMzRhZWFiODkzMWM2NGVhMDM3
ZTJlYWY1NWQwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3Nj
cmlwdGVkL25hdmlnYXRlLWF3YXktaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NU
WVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+Cis8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2Z1bmN0aW9uIGxvZyhtc2cpIHsKKyAg
ICBwYXJlbnQucG9zdE1lc3NhZ2UobXNnLCAnKicpOworfQorCitmdW5jdGlvbiBzZXREZWZhdWx0
SGFuZGxlcnMocikgeworICAgIGZvciAodmFyIHByb3AgaW4gcikgeworICAgICAgICBpZiAocHJv
cC5tYXRjaCgnXm9uJykpIHsKKyAgICAgICAgICAgIHJbcHJvcF0gPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICBsb2coJ3VuZXhwZWN0ZWQgJyArIGV2ZW50LnR5cGUgKyAnIGV2ZW50IScp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBydW4oKSB7
CisgICAgaWYgKHdpbmRvdy50b3AgPT0gd2luZG93LnNlbGYpIHsKKyAgICAgICAgLy8gV2UgYXJl
IG5vdCBpbiBhbiBpZnJhbWUuCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib2R5
JykuaW5uZXJIVE1MID0gJ1RoaXMgZmlsZSBpcyBtZWFudCB0byBiZSB1c2VkIGFzIHBhcnQgb2Yg
dGhlIG5hdmlnYXRlLWF3YXkuaHRtbCB0ZXN0Lic7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICB3aW5kb3cuc3BlZWNocmVjbyA9IG5ldyB3ZWJraXRTcGVlY2hSZWNvZ25pdGlvbigpOwor
ICAgIGxvZygnQ3JlYXRlZCBTcGVlY2hSZWNvZ25pdGlvbicpOworICAgIHNldERlZmF1bHRIYW5k
bGVycyhzcGVlY2hyZWNvKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoUmVjb2duaXRpb25XYWl0
QWZ0ZXJTdGFydCh0cnVlKTsKKworICAgIHNwZWVjaHJlY28ub25zdGFydCA9IGZ1bmN0aW9uKCkg
eworICAgICAgICBsb2coJ29uc3RhcnQnKTsKKyAgICAgICAgbG9nKCduYXZpZ2F0aW5nIGF3YXkn
KTsKKyAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJ2RhdGE6dGV4dC9odG1sLE5hdmlnYXRlZCBh
d2F5Lic7CisgICAgfTsKKworICAgIGxvZygnY2FsbGluZyBzdGFydCgpJyk7CisgICAgc3BlZWNo
cmVjby5zdGFydCgpOworfQorCit3aW5kb3cub25sb2FkID0gcnVuOworPC9zY3JpcHQ+CitUaGlz
IGlmcmFtZSBjcmVhdGVzIGEgc3BlZWNocmVjbyBvYmplY3QuCis8L2h0bWw+CisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3YXkuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3YXkuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iNDZlZjQ1YTEyZmI4YTVkMGFkYmNjM2VkMDBmYzNkMzZjZDQ5NDRlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvbmF2aWdhdGUtYXdh
eS5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNj
cmlwdGlvbignVGVzdCBiZWhhdmlvdXIgd2hlbiBuYXZpZ2F0aW5nIGF3YXkgZnJvbSBhIHBhZ2Ug
dXNpbmcgdGhlIFNwZWVjaCBKYXZhU2NyaXB0IEFQSScpOworCitmdW5jdGlvbiBydW4oKSB7Cisg
ICAgLy8gQ2hlY2sgYXZhaWxhYmlsaXR5IG9mIGNvbnN0cnVjdG9ycy4KKyAgICBzaG91bGRCZVRy
dWUoIid3ZWJraXRTcGVlY2hSZWNvZ25pdGlvbicgaW4gc2VsZiIpOworICAgIHNob3VsZEJlRmFs
c2UoIndlYmtpdFNwZWVjaFJlY29nbml0aW9uID09IG51bGwiKTsKKworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIHNob3VsZEJlRmFsc2UoImxheW91dFRlc3RD
b250cm9sbGVyLmhhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkJlZW5BYm9ydGVkKCkiKTsKKworICAg
IHdpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoJ2lmcmFtZTog
JyArIGV2ZW50LmRhdGEpOworICAgIH07Cit9CisKK3dpbmRvdy5pZnJhbWVvbmxvYWRjb3VudCA9
IDA7CitmdW5jdGlvbiBpZnJhbWVvbmxvYWQoKSB7CisgICAgKytpZnJhbWVvbmxvYWRjb3VudDsK
KworICAgIGlmIChpZnJhbWVvbmxvYWRjb3VudCA9PT0gMSkgeworICAgICAgICAvLyBUaGUgaWZy
YW1lIGhhcyBsb2FkZWQgZm9yIHRoZSBmaXJzdCB0aW1lLgorICAgICAgICBkZWJ1ZygnVGhlIGlm
cmFtZSB3YXMgbG9hZGVkLicpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZGVidWco
J1RoZSBpZnJhbWUgd2FzIG5hdmlnYXRlZCBhd2F5LicpOworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgIHNob3VsZEJlVHJ1ZSgibGF5b3V0VGVzdENvbnRyb2xs
ZXIuaGFzTW9ja1NwZWVjaFJlY29nbml0aW9uQmVlbkFib3J0ZWQoKSIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCit3aW5kb3cub25sb2FkID0gcnVuOword2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8aWZyYW1lIGlkPSJpZnJhbWUiIHNyYz0ibmF2aWdhdGUt
YXdheS1pZnJhbWUuaHRtbCIgb25sb2FkPSJpZnJhbWVvbmxvYWQoKSIgPgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148344</attachid>
            <date>2012-06-19 08:43:01 -0700</date>
            <delta_ts>2012-06-20 02:29:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89217-20120619164300.patch</filename>
            <type>text/plain</type>
            <size>24160</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmVmMjA4ZTUyNzNmZWRk
MjRhZGM1NmFlMGQ3OTI0Zjc1ZTM3MjE0Yy4uYjZmNWFiYmM4ZmEzNTc5MzJlMjJjZThjNDg0NGI0
NzZlYTRiMzVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA2LTE5ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIEphdmFTY3Jp
cHQgQVBJOiBTcGVlY2hSZWNvZ25pdGlvbiBzaG91bGQgaG9vayB1cCB3aXRoIEFjdGl2ZURPTU9i
amVjdCBtb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFByZXZpb3VzbHksIHRoZSBTcGVlY2hSZWNvZ25pdGlvbiB3YXMga2VwdCBhbGl2ZSB3aGlsZSB3
YWl0aW5nIGZvcgorICAgICAgICBwZW5kaW5nIGV2ZW50cyBieSBtYWtpbmcgdGhlIGVtYmVkZGVy
IGhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdC4KKyAgICAgICAgV2Ugc2hvdWxkIGRvIHRo
aXMgYnkgdXNpbmcgQWN0aXZlRE9NT2JqZWN0J3Mgc2V0UGVuZGluZ0FjdGl2aXR5KCkgaW5zdGVh
ZC4KKworICAgICAgICBBbHNvLCBvdmVycmlkZSBBY3RpdmVET01PYmplY3Q6OnN0b3AoKSB0byBn
ZXQgbm90aWZpZWQgd2hlbiB0aGUgdXNlcgorICAgICAgICBsZWF2ZXMgdGhlIHBhZ2UuCisKKyAg
ICAgICAgVGVzdDogZmFzdC9zcGVlY2gvc2NyaXB0ZWQvbmF2aWdhdGUtYXdheS5odG1sCisKKyAg
ICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb246OmRpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvbi5oOgorICAgICAgICAoU3BlZWNoUmVjb2duaXRpb24pOgorCiAy
MDEyLTA2LTE5ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW50
cm9kdWNlIEVOQUJMRV9DU1BfTkVYVCBjb25maWd1cmF0aW9uIGZsYWcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKaW5kZXggOGJk
YzM1M2M4MWFiOTRiZjBiMjNmZmRmMmQ0ODcxOGNlYTFkOGI3Mi4uM2M3ZDgwMDcyODMwOTUxZjY4
ZjZhNjdkZTI4N2VlNzI4OTY1NjA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcApAQCAtNDYsNyArNDYsMTAgQEAgUGFzc1Jl
ZlB0cjxTcGVlY2hSZWNvZ25pdGlvbj4gU3BlZWNoUmVjb2duaXRpb246OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KgogCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uOjpzdGFydCgpCiB7Ci0g
ICAgQVNTRVJUKG1fY29udHJvbGxlcik7IC8vIEZJWE1FOiBTcGVjIHNob3VsZCBzYXkgd2hhdCB0
byBkbyBpZiB3ZSBhcmUgYWxyZWFkeSBzdGFydGVkLgorICAgIEFTU0VSVChtX2NvbnRyb2xsZXIp
OworICAgIC8vIEZJWE1FOiBTcGVjIHNob3VsZCBzYXkgd2hhdCB0byBkbyBpZiB3ZSBhcmUgYWxy
ZWFkeSBzdGFydGVkLgorCisgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogICAgIG1fY29u
dHJvbGxlci0+c3RhcnQodGhpcywgbV9ncmFtbWFycy5nZXQoKSwgbV9sYW5nLCBtX2NvbnRpbnVv
dXMpOwogfQogCkBAIC0xMjEsNiArMTI0LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvbjo6ZGlk
U3RhcnQoKQogdm9pZCBTcGVlY2hSZWNvZ25pdGlvbjo6ZGlkRW5kKCkKIHsKICAgICBkaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuZEV2ZW50LCAvKmNhbkJ1YmJsZT0q
L2ZhbHNlLCAvKmNhbmNlbGFibGU9Ki9mYWxzZSkpOworICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5
KHRoaXMpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNwZWVjaFJlY29nbml0aW9uOjppbnRl
cmZhY2VOYW1lKCkgY29uc3QKQEAgLTEzMyw2ICsxMzcsMTIgQEAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogU3BlZWNoUmVjb2duaXRpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAog
ICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIH0K
IAordm9pZCBTcGVlY2hSZWNvZ25pdGlvbjo6c3RvcCgpCit7CisgICAgaWYgKGhhc1BlbmRpbmdB
Y3Rpdml0eSgpKQorICAgICAgICBhYm9ydCgpOworfQorCiBTcGVlY2hSZWNvZ25pdGlvbjo6U3Bl
ZWNoUmVjb2duaXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFj
dGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9ncmFtbWFycyhTcGVlY2hHcmFt
bWFyTGlzdDo6Y3JlYXRlKCkpIC8vIEZJWE1FOiBUaGUgc3BlYyBpcyBub3QgY2xlYXIgb24gdGhl
IGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBncmFtbWFycyBhdHRyaWJ1dGUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uaAppbmRleCAzZmMyNDQx
NjZlMzM4YzNiMGY2MmNmY2YwMmYwOGI4NWE1ZDU1NzAzLi44MzliNmJkZTBlYWE4NmIxMmYwYWE2
MDA0ZGI4NWIwMjRkYWM1ZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uLmgKQEAgLTQ5LDEyICs0OSwxMSBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kik7CiAgICAgflNwZWVjaFJlY29nbml0aW9uKCk7CiAKKyAgICAvLyBBdHRyaWJ1
dGVzLgogICAgIFBhc3NSZWZQdHI8U3BlZWNoR3JhbW1hckxpc3Q+IGdyYW1tYXJzKCkgeyByZXR1
cm4gbV9ncmFtbWFyczsgfQogICAgIHZvaWQgc2V0R3JhbW1hcnMoUGFzc1JlZlB0cjxTcGVlY2hH
cmFtbWFyTGlzdD4gZ3JhbW1hcnMpIHsgbV9ncmFtbWFycyA9IGdyYW1tYXJzOyB9Ci0KICAgICBT
dHJpbmcgbGFuZygpIHsgcmV0dXJuIG1fbGFuZzsgfQogICAgIHZvaWQgc2V0TGFuZyhjb25zdCBT
dHJpbmcmIGxhbmcpIHsgbV9sYW5nID0gbGFuZzsgfQotCiAgICAgYm9vbCBjb250aW51b3VzKCkg
eyByZXR1cm4gbV9jb250aW51b3VzOyB9CiAgICAgdm9pZCBzZXRDb250aW51b3VzKGJvb2wgY29u
dGludW91cykgeyBtX2NvbnRpbnVvdXMgPSBjb250aW51b3VzOyB9CiAKQEAgLTc3LDEwICs3Niwx
MyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTdGFydCgpOwogICAgIHZvaWQgZGlkRW5kKCk7CiAK
LSAgICAvLyBFdmVudFRhcmdldAorICAgIC8vIEV2ZW50VGFyZ2V0LgogICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgT1ZFUlJJREU7CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3QuCisgICAgdmlydHVhbCB2b2lk
IHN0b3AoKSBPVkVSUklERTsKKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRp
b24+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxTcGVlY2hSZWNvZ25pdGlvbj46OmRlcmVm
OwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
YTlhNmYyNzM2MWIwM2E1Yzc1OTkwNWE3MThmYmNjMGI0MzcxNTk2Yy4uN2Y2NjQzOTM4NTIyNmYy
ODcxZmY3Yjc5ZTUzNjhkYmQ4N2NjMTUzZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA2LTE5ICBIYW5zIFdl
bm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIEphdmFTY3JpcHQg
QVBJOiBTcGVlY2hSZWNvZ25pdGlvbiBzaG91bGQgaG9vayB1cCB3aXRoIEFjdGl2ZURPTU9iamVj
dCBtb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
OTIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBhIG1ldGhvZCBmb3IgY2hlY2tpbmcgd2hldGhlciB0aGUgbW9jayBzcGVlY2gKKyAgICAgICAg
cmVjb2duaXRpb24gd2FzIGFib3J0ZWQuCisKKyAgICAgICAgQWxzbyByZWRvIHRoZSB3YXkgdGhl
IG1vY2sgcG9zdHMgdGFza3MuIEluc3RlYWQgb2YgcG9zdGluZyB0aGVtIGFsbCBhdCBvbmNlLAor
ICAgICAgICBtYWludGFpbiBhbiBpbnRlcm5hbCBxdWV1ZSBvZiB0YXNrIG9iamVjdHMsIGFuZCBj
YWxsIHBvc3RUYXNrKCkgZm9yIHRoZW0KKyAgICAgICAgb25jZSBhdCB0aGUgdGltZS4gVGhpcyBt
ZWFucyB0aGF0IGZvciBleGFtcGxlIHdoZW4gdGhlIHBhZ2UgaXMgbmF2aWdhdGVkCisgICAgICAg
IGF3YXkgYW5kIGFib3J0KCkgaXMgY2FsbGVkLCB0aGF0IGNhbGwgZG9lc24ndCBlbmQgdXAgYWZ0
ZXIgYSBidW5jaAorICAgICAgICBvZiBwcmV2aW91c2x5IHBvc3RlZCBldmVudHMgb24gdGhlIGV2
ZW50IGxvb3AuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVz
dENvbnRyb2xsZXIpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc01vY2tTcGVl
Y2hSZWNvZ25pdGlvbkJlZW5BYm9ydGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNv
Z25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2xpZW50Q2FsbFRhc2s6OkNsaWVudENhbGxU
YXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVzdWx0VGFzazo6UmVzdWx0VGFzayk6CisgICAgICAg
IChXZWJLaXQ6Ok5vTWF0Y2hUYXNrOjpOb01hdGNoVGFzayk6CisgICAgICAgIChXZWJLaXQ6OkVy
cm9yVGFzazo6RXJyb3JUYXNrKToKKyAgICAgICAgKE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjpz
dGFydCk6CisgICAgICAgIChNb2NrV2ViU3BlZWNoUmVjb2duaXplcjo6YWJvcnQpOgorICAgICAg
ICAoTW9ja1dlYlNwZWVjaFJlY29nbml6ZXI6OnNldEVycm9yKToKKyAgICAgICAgKE1vY2tXZWJT
cGVlY2hSZWNvZ25pemVyOjpNb2NrV2ViU3BlZWNoUmVjb2duaXplcik6CisgICAgICAgIChNb2Nr
V2ViU3BlZWNoUmVjb2duaXplcjo6c3RhcnRUYXNrUXVldWUpOgorICAgICAgICAoTW9ja1dlYlNw
ZWVjaFJlY29nbml6ZXI6OlN0ZXBUYXNrOjpydW5JZlZhbGlkKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5oOgorICAgICAgICAoTW9j
a1dlYlNwZWVjaFJlY29nbml6ZXI6Omhhc0JlZW5BYm9ydGVkKToKKyAgICAgICAgKE1vY2tXZWJT
cGVlY2hSZWNvZ25pemVyKToKKyAgICAgICAgKE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjp0YXNr
TGlzdCk6CisgICAgICAgIChUYXNrKToKKyAgICAgICAgKE1vY2tXZWJTcGVlY2hSZWNvZ25pemVy
OjpUYXNrOjpUYXNrKToKKyAgICAgICAgKE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjpUYXNrOjp+
VGFzayk6CisgICAgICAgIChTdGVwVGFzayk6CisgICAgICAgIChNb2NrV2ViU3BlZWNoUmVjb2du
aXplcjo6U3RlcFRhc2s6OlN0ZXBUYXNrKToKKwogMjAxMi0wNi0xOSAgWm9sdGFuIEhvcnZhdGgg
IDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIE1vZGlmeSBIVFRQUyBwb3J0IHRv
IDg0NDMgZm9yIHBlcmZvcm1hbmNlIHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMTIwMTk3ZTI1NjNj
ZGFmZjg0MWM4MmViNWRhYjM0ZGJlZjhkMjJmMy4uOThkMzZlODdhODlmOWJhNjVjMmUyNWQyOTgx
ZTk5YzliNGVjYWE0NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTE4LDYgKzExOCw3IEBAIExheW91dFRl
c3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcihUZXN0U2hlbGwqIHNoZWxsKQogI2lm
IEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCiAgICAgYmluZE1ldGhvZCgiYWRkTW9ja1NwZWVjaFJl
Y29nbml0aW9uUmVzdWx0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjphZGRNb2NrU3BlZWNoUmVj
b2duaXRpb25SZXN1bHQpOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tTcGVlY2hSZWNvZ25pdGlv
bkVycm9yIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoUmVjb2duaXRpb25F
cnJvcik7CisgICAgYmluZE1ldGhvZCgiaGFzTW9ja1NwZWVjaFJlY29nbml0aW9uQmVlbkFib3J0
ZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkJlZW5B
Ym9ydGVkKTsKICNlbmRpZgogICAgIGJpbmRNZXRob2QoImFkZE9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeSk7CiAgICAgYmluZE1ldGhvZCgiYWRkVXNlclNjcmlwdCIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6YWRkVXNlclNjcmlwdCk7CkBAIC0xOTY2LDYgKzE5NjcsMTMgQEAgdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaFJlY29nbml0aW9uRXJyb3IoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JgogICAgIGlmIChNb2NrV2ViU3BlZWNoUmVjb2duaXplciogcmVjb2duaXplciA9
IG1fc2hlbGwtPndlYlZpZXdIb3N0KCktPm1vY2tTcGVlY2hSZWNvZ25pemVyKCkpCiAgICAgICAg
IHJlY29nbml6ZXItPnNldEVycm9yKGFyZ3VtZW50c1swXS50b0ludDMyKCksIGNwcFZhcmlhbnRU
b1dlYlN0cmluZyhhcmd1bWVudHNbMV0pKTsKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6aGFzTW9ja1NwZWVjaFJlY29nbml0aW9uQmVlbkFib3J0ZWQoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0KGZhbHNlKTsKKyAg
ICBpZiAoTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIqIHJlY29nbml6ZXIgPSBtX3NoZWxsLT53ZWJW
aWV3SG9zdCgpLT5tb2NrU3BlZWNoUmVjb2duaXplcigpKQorICAgICAgICByZXN1bHQtPnNldChy
ZWNvZ25pemVyLT5oYXNCZWVuQWJvcnRlZCgpKTsKK30KICNlbmRpZgogCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzdGFydFNwZWVjaElucHV0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA1YTg3MjkzODg4N2EyYjIx
MTYxMGI4YzZjNjUxYmUxYjZlYTlhNTViLi43NmM3MzM2OTE4ZjM5N2Q0MWE2OWYxMjExYzhmMDcz
ZDg4ZmNkNWU1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTM3NSw2ICszNzUsNyBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKFNDUklQVEVEX1NQRUVDSCkKICAgICB2b2lkIGFkZE1vY2tTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRN
b2NrU3BlZWNoUmVjb2duaXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CisgICAgdm9pZCBoYXNNb2NrU3BlZWNoUmVjb2duaXRpb25CZWVuQWJvcnRlZChjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAjZW5kaWYKICAgICB2b2lkIHN0YXJ0
U3BlZWNoSW5wdXQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2du
aXplci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVj
b2duaXplci5jcHAKaW5kZXggYjUzZTE3MDFmNTI2MWEwZDczYmUyYjY4Nzg4YmI5OTgyYjAyNDli
NC4uODQ1YmQ5NTZhYzkxY2U4N2VjMTQ4NjVhNmMzYjYxMDQxNzRmZjNlZiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25p
emVyLmNwcApAQCAtMzcsMzEgKzM3LDMxIEBAIG5hbWVzcGFjZSB7CiAKIC8vIFRhc2sgY2xhc3Mg
Zm9yIGNhbGxpbmcgYSBjbGllbnQgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdCB0YWtlIGFueSBwYXJh
bWV0ZXJzLgogdHlwZWRlZiB2b2lkIChXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50OjoqQ2xpZW50
RnVuY3Rpb25Qb2ludGVyKShjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYpOwotY2xh
c3MgQ2xpZW50Q2FsbFRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoUmVjb2du
aXplcj4geworY2xhc3MgQ2xpZW50Q2FsbFRhc2sgOiBwdWJsaWMgTW9ja1dlYlNwZWVjaFJlY29n
bml6ZXI6OlRhc2sgewogcHVibGljOgogICAgIENsaWVudENhbGxUYXNrKE1vY2tXZWJTcGVlY2hS
ZWNvZ25pemVyKiBtb2NrLCBDbGllbnRGdW5jdGlvblBvaW50ZXIgZnVuY3Rpb24pCi0gICAgICAg
IDogTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoUmVjb2duaXplcj4obW9jaykKKyAgICAgICAgOiBN
b2NrV2ViU3BlZWNoUmVjb2duaXplcjo6VGFzayhtb2NrKQogICAgICAgICAsIG1fZnVuY3Rpb24o
ZnVuY3Rpb24pCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkg
T1ZFUlJJREUgeyAobV9vYmplY3QtPmNsaWVudCgpLT4qbV9mdW5jdGlvbikobV9vYmplY3QtPmhh
bmRsZSgpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW4oKSBPVkVSUklERSB7IChtX3JlY29nbml6
ZXItPmNsaWVudCgpLT4qbV9mdW5jdGlvbikobV9yZWNvZ25pemVyLT5oYW5kbGUoKSk7IH0KIAog
cHJpdmF0ZToKICAgICBDbGllbnRGdW5jdGlvblBvaW50ZXIgbV9mdW5jdGlvbjsKIH07CiAKIC8v
IFRhc2sgZm9yIGRlbGl2ZXJpbmcgYSByZXN1bHQgZXZlbnQuCi1jbGFzcyBSZXN1bHRUYXNrIDog
cHVibGljIE1ldGhvZFRhc2s8TW9ja1dlYlNwZWVjaFJlY29nbml6ZXI+IHsKK2NsYXNzIFJlc3Vs
dFRhc2sgOiBwdWJsaWMgTW9ja1dlYlNwZWVjaFJlY29nbml6ZXI6OlRhc2sgewogcHVibGljOgog
ICAgIFJlc3VsdFRhc2soTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIqIG1vY2ssIGNvbnN0IFdlYlN0
cmluZyB0cmFuc2NyaXB0LCBmbG9hdCBjb25maWRlbmNlKQotICAgICAgICA6IE1ldGhvZFRhc2s8
TW9ja1dlYlNwZWVjaFJlY29nbml6ZXI+KG1vY2spCisgICAgICAgIDogTW9ja1dlYlNwZWVjaFJl
Y29nbml6ZXI6OlRhc2sobW9jaykKICAgICAgICAgLCBtX3RyYW5zY3JpcHQodHJhbnNjcmlwdCkK
ICAgICAgICAgLCBtX2NvbmZpZGVuY2UoY29uZmlkZW5jZSkKICAgICB7CiAgICAgfQogCi0gICAg
dmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQorICAgIHZpcnR1YWwgdm9pZCBydW4o
KSBPVkVSUklERQogICAgIHsKICAgICAgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gdHJhbnNjcmlw
dHMoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSk7CiAgICAgICAgIFdlYlZlY3RvcjxmbG9hdD4gY29u
ZmlkZW5jZXMoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSk7CkBAIC03MCw3ICs3MCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgV2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQgcmVzOwogICAgICAgICByZXMu
YXNzaWduKHRyYW5zY3JpcHRzLCBjb25maWRlbmNlcywgdHJ1ZSk7CiAKLSAgICAgICAgbV9vYmpl
Y3QtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzdWx0KG1fb2JqZWN0LT5oYW5kbGUoKSwgcmVzLCAw
LCBXZWJWZWN0b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+KCkpOworICAgICAgICBtX3Jl
Y29nbml6ZXItPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzdWx0KG1fcmVjb2duaXplci0+aGFuZGxl
KCksIHJlcywgMCwgV2ViVmVjdG9yPFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0PigpKTsKICAg
ICB9CiAKIHByaXZhdGU6CkBAIC03OSwyMyArNzksMjMgQEAgcHJpdmF0ZToKIH07CiAKIC8vIFRh
c2sgZm9yIGRlbGl2ZXJpbmcgYSBub21hdGNoIGV2ZW50LgotY2xhc3MgTm9NYXRjaFRhc2sgOiBw
dWJsaWMgTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoUmVjb2duaXplcj4geworY2xhc3MgTm9NYXRj
aFRhc2sgOiBwdWJsaWMgTW9ja1dlYlNwZWVjaFJlY29nbml6ZXI6OlRhc2sgewogcHVibGljOgot
ICAgIE5vTWF0Y2hUYXNrKE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyKiBtb2NrKSA6IE1ldGhvZFRh
c2s8TW9ja1dlYlNwZWVjaFJlY29nbml6ZXI+KG1vY2spIHsgfQotICAgIHZpcnR1YWwgdm9pZCBy
dW5JZlZhbGlkKCkgT1ZFUlJJREUgeyBtX29iamVjdC0+Y2xpZW50KCktPmRpZFJlY2VpdmVOb01h
dGNoKG1fb2JqZWN0LT5oYW5kbGUoKSwgV2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQoKSk7IH0K
KyAgICBOb01hdGNoVGFzayhNb2NrV2ViU3BlZWNoUmVjb2duaXplciogbW9jaykgOiBNb2NrV2Vi
U3BlZWNoUmVjb2duaXplcjo6VGFzayhtb2NrKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVuKCkg
T1ZFUlJJREUgeyBtX3JlY29nbml6ZXItPmNsaWVudCgpLT5kaWRSZWNlaXZlTm9NYXRjaChtX3Jl
Y29nbml6ZXItPmhhbmRsZSgpLCBXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCgpKTsgfQogfTsK
IAogLy8gVGFzayBmb3IgZGVsaXZlcmluZyBhbiBlcnJvciBldmVudC4KLWNsYXNzIEVycm9yVGFz
ayA6IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyPiB7CitjbGFzcyBF
cnJvclRhc2sgOiBwdWJsaWMgTW9ja1dlYlNwZWVjaFJlY29nbml6ZXI6OlRhc2sgewogcHVibGlj
OgogICAgIEVycm9yVGFzayhNb2NrV2ViU3BlZWNoUmVjb2duaXplciogbW9jaywgaW50IGNvZGUs
IGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKLSAgICAgICAgOiBNZXRob2RUYXNrPE1vY2tXZWJT
cGVlY2hSZWNvZ25pemVyPihtb2NrKQorICAgICAgICA6IE1vY2tXZWJTcGVlY2hSZWNvZ25pemVy
OjpUYXNrKG1vY2spCiAgICAgICAgICwgbV9jb2RlKGNvZGUpCiAgICAgICAgICwgbV9tZXNzYWdl
KG1lc3NhZ2UpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkg
T1ZFUlJJREUgeyBtX29iamVjdC0+Y2xpZW50KCktPmRpZFJlY2VpdmVFcnJvcihtX29iamVjdC0+
aGFuZGxlKCksIG1fbWVzc2FnZSwgc3RhdGljX2Nhc3Q8V2ViU3BlZWNoUmVjb2duaXplckNsaWVu
dDo6RXJyb3JDb2RlPihtX2NvZGUpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW4oKSBPVkVSUklE
RSB7IG1fcmVjb2duaXplci0+Y2xpZW50KCktPmRpZFJlY2VpdmVFcnJvcihtX3JlY29nbml6ZXIt
PmhhbmRsZSgpLCBtX21lc3NhZ2UsIHN0YXRpY19jYXN0PFdlYlNwZWVjaFJlY29nbml6ZXJDbGll
bnQ6OkVycm9yQ29kZT4obV9jb2RlKSk7IH0KIAogcHJpdmF0ZToKICAgICBpbnQgbV9jb2RlOwpA
QCAtMTExLDI5ICsxMTEsMzIgQEAgUGFzc093blB0cjxNb2NrV2ViU3BlZWNoUmVjb2duaXplcj4g
TW9ja1dlYlNwZWVjaFJlY29nbml6ZXI6OmNyZWF0ZSgpCiAKIHZvaWQgTW9ja1dlYlNwZWVjaFJl
Y29nbml6ZXI6OnN0YXJ0KGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJiBoYW5kbGUs
IGNvbnN0IFdlYlNwZWVjaFJlY29nbml0aW9uUGFyYW1zJiBwYXJhbXMsIFdlYlNwZWVjaFJlY29n
bml6ZXJDbGllbnQqIGNsaWVudCkKIHsKKyAgICBtX2hhc0JlZW5BYm9ydGVkID0gZmFsc2U7CiAg
ICAgbV9oYW5kbGUgPSBoYW5kbGU7CiAgICAgbV9jbGllbnQgPSBjbGllbnQ7CiAKLSAgICBwb3N0
VGFzayhuZXcgQ2xpZW50Q2FsbFRhc2sodGhpcywgJldlYlNwZWVjaFJlY29nbml6ZXJDbGllbnQ6
OmRpZFN0YXJ0KSk7Ci0gICAgcG9zdFRhc2sobmV3IENsaWVudENhbGxUYXNrKHRoaXMsICZXZWJT
cGVlY2hSZWNvZ25pemVyQ2xpZW50OjpkaWRTdGFydEF1ZGlvKSk7Ci0gICAgcG9zdFRhc2sobmV3
IENsaWVudENhbGxUYXNrKHRoaXMsICZXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50OjpkaWRTdGFy
dFNvdW5kKSk7Ci0gICAgcG9zdFRhc2sobmV3IENsaWVudENhbGxUYXNrKHRoaXMsICZXZWJTcGVl
Y2hSZWNvZ25pemVyQ2xpZW50OjpkaWRTdGFydFNwZWVjaCkpOworICAgIG1fdGFza1F1ZXVlLmFw
cGVuZChhZG9wdFB0cihuZXcgQ2xpZW50Q2FsbFRhc2sodGhpcywgJldlYlNwZWVjaFJlY29nbml6
ZXJDbGllbnQ6OmRpZFN0YXJ0KSkpOworICAgIG1fdGFza1F1ZXVlLmFwcGVuZChhZG9wdFB0cihu
ZXcgQ2xpZW50Q2FsbFRhc2sodGhpcywgJldlYlNwZWVjaFJlY29nbml6ZXJDbGllbnQ6OmRpZFN0
YXJ0QXVkaW8pKSk7CisgICAgbV90YXNrUXVldWUuYXBwZW5kKGFkb3B0UHRyKG5ldyBDbGllbnRD
YWxsVGFzayh0aGlzLCAmV2ViU3BlZWNoUmVjb2duaXplckNsaWVudDo6ZGlkU3RhcnRTb3VuZCkp
KTsKKyAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoYWRvcHRQdHIobmV3IENsaWVudENhbGxUYXNrKHRo
aXMsICZXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50OjpkaWRTdGFydFNwZWVjaCkpKTsKIAogICAg
IGlmICghbV9tb2NrVHJhbnNjcmlwdHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVChtX21v
Y2tUcmFuc2NyaXB0cy5zaXplKCkgPT0gbV9tb2NrQ29uZmlkZW5jZXMuc2l6ZSgpKTsKIAogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbW9ja1RyYW5zY3JpcHRzLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgcG9zdFRhc2sobmV3IFJlc3VsdFRhc2sodGhpcywgbV9tb2NrVHJhbnNj
cmlwdHNbaV0sIG1fbW9ja0NvbmZpZGVuY2VzW2ldKSk7CisgICAgICAgICAgICBtX3Rhc2tRdWV1
ZS5hcHBlbmQoYWRvcHRQdHIobmV3IFJlc3VsdFRhc2sodGhpcywgbV9tb2NrVHJhbnNjcmlwdHNb
aV0sIG1fbW9ja0NvbmZpZGVuY2VzW2ldKSkpOwogCiAgICAgICAgIG1fbW9ja1RyYW5zY3JpcHRz
LmNsZWFyKCk7CiAgICAgICAgIG1fbW9ja0NvbmZpZGVuY2VzLmNsZWFyKCk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIHBvc3RUYXNrKG5ldyBOb01hdGNoVGFzayh0aGlzKSk7CisgICAgICAgIG1fdGFz
a1F1ZXVlLmFwcGVuZChhZG9wdFB0cihuZXcgTm9NYXRjaFRhc2sodGhpcykpKTsKIAotICAgIHBv
c3RUYXNrKG5ldyBDbGllbnRDYWxsVGFzayh0aGlzLCAmV2ViU3BlZWNoUmVjb2duaXplckNsaWVu
dDo6ZGlkRW5kU3BlZWNoKSk7Ci0gICAgcG9zdFRhc2sobmV3IENsaWVudENhbGxUYXNrKHRoaXMs
ICZXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50OjpkaWRFbmRTb3VuZCkpOwotICAgIHBvc3RUYXNr
KG5ldyBDbGllbnRDYWxsVGFzayh0aGlzLCAmV2ViU3BlZWNoUmVjb2duaXplckNsaWVudDo6ZGlk
RW5kQXVkaW8pKTsKLSAgICBwb3N0VGFzayhuZXcgQ2xpZW50Q2FsbFRhc2sodGhpcywgJldlYlNw
ZWVjaFJlY29nbml6ZXJDbGllbnQ6OmRpZEVuZCkpOworICAgIG1fdGFza1F1ZXVlLmFwcGVuZChh
ZG9wdFB0cihuZXcgQ2xpZW50Q2FsbFRhc2sodGhpcywgJldlYlNwZWVjaFJlY29nbml6ZXJDbGll
bnQ6OmRpZEVuZFNwZWVjaCkpKTsKKyAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoYWRvcHRQdHIobmV3
IENsaWVudENhbGxUYXNrKHRoaXMsICZXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50OjpkaWRFbmRT
b3VuZCkpKTsKKyAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoYWRvcHRQdHIobmV3IENsaWVudENhbGxU
YXNrKHRoaXMsICZXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50OjpkaWRFbmRBdWRpbykpKTsKKyAg
ICBtX3Rhc2tRdWV1ZS5hcHBlbmQoYWRvcHRQdHIobmV3IENsaWVudENhbGxUYXNrKHRoaXMsICZX
ZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50OjpkaWRFbmQpKSk7CisKKyAgICBzdGFydFRhc2tRdWV1
ZSgpOwogfQogCiB2b2lkIE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjpzdG9wKGNvbnN0IFdlYlNw
ZWVjaFJlY29nbml0aW9uSGFuZGxlJiBoYW5kbGUsIFdlYlNwZWVjaFJlY29nbml6ZXJDbGllbnQq
IGNsaWVudCkKQEAgLTE1MCw4ICsxNTMsMTAgQEAgdm9pZCBNb2NrV2ViU3BlZWNoUmVjb2duaXpl
cjo6YWJvcnQoY29uc3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmIGhhbmRsZSwgV2UKICAg
ICBtX2hhbmRsZSA9IGhhbmRsZTsKICAgICBtX2NsaWVudCA9IGNsaWVudDsKIAotICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgbV90YXNrUXVl
dWUuY2xlYXIoKTsKKyAgICBtX2hhc0JlZW5BYm9ydGVkID0gdHJ1ZTsKKyAgICBtX3Rhc2tRdWV1
ZS5hcHBlbmQoYWRvcHRQdHIobmV3IENsaWVudENhbGxUYXNrKHRoaXMsICZXZWJTcGVlY2hSZWNv
Z25pemVyQ2xpZW50OjpkaWRFbmQpKSk7CisgICAgc3RhcnRUYXNrUXVldWUoKTsKIH0KIAogdm9p
ZCBNb2NrV2ViU3BlZWNoUmVjb2duaXplcjo6YWRkTW9ja1Jlc3VsdChjb25zdCBXZWJTdHJpbmcm
IHRyYW5zY3JpcHQsIGZsb2F0IGNvbmZpZGVuY2UpCkBAIC0xNjIsMTIgKzE2NywxNSBAQCB2b2lk
IE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjphZGRNb2NrUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYg
dHJhbnNjcmlwdCwgZmxvYXQgYwogCiB2b2lkIE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjpzZXRF
cnJvcihpbnQgY29kZSwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fdGFza0xp
c3QucmV2b2tlQWxsKCk7Ci0gICAgcG9zdFRhc2sobmV3IEVycm9yVGFzayh0aGlzLCBjb2RlLCBt
ZXNzYWdlKSk7Ci0gICAgcG9zdFRhc2sobmV3IENsaWVudENhbGxUYXNrKHRoaXMsICZXZWJTcGVl
Y2hSZWNvZ25pemVyQ2xpZW50OjpkaWRFbmQpKTsKKyAgICBtX3Rhc2tRdWV1ZS5jbGVhcigpOwor
ICAgIG1fdGFza1F1ZXVlLmFwcGVuZChhZG9wdFB0cihuZXcgRXJyb3JUYXNrKHRoaXMsIGNvZGUs
IG1lc3NhZ2UpKSk7CisgICAgbV90YXNrUXVldWUuYXBwZW5kKGFkb3B0UHRyKG5ldyBDbGllbnRD
YWxsVGFzayh0aGlzLCAmV2ViU3BlZWNoUmVjb2duaXplckNsaWVudDo6ZGlkRW5kKSkpOworICAg
IHN0YXJ0VGFza1F1ZXVlKCk7CiB9CiAKIE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjpNb2NrV2Vi
U3BlZWNoUmVjb2duaXplcigpCisgICAgOiBtX2hhc0JlZW5BYm9ydGVkKGZhbHNlKQorICAgICwg
bV90YXNrUXVldWVSdW5uaW5nKGZhbHNlKQogewogfQogCkBAIC0xNzUsNSArMTgzLDMyIEBAIE1v
Y2tXZWJTcGVlY2hSZWNvZ25pemVyOjp+TW9ja1dlYlNwZWVjaFJlY29nbml6ZXIoKQogewogfQog
Cit2b2lkIE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjpzdGFydFRhc2tRdWV1ZSgpCit7CisgICAg
aWYgKG1fdGFza1F1ZXVlUnVubmluZykKKyAgICAgICAgcmV0dXJuOworICAgIHBvc3RUYXNrKG5l
dyBTdGVwVGFzayh0aGlzKSk7CisgICAgbV90YXNrUXVldWVSdW5uaW5nID0gdHJ1ZTsKK30KKwor
dm9pZCBNb2NrV2ViU3BlZWNoUmVjb2duaXplcjo6U3RlcFRhc2s6OnJ1bklmVmFsaWQoKQorewor
ICAgIEFTU0VSVChtX29iamVjdC0+bV90YXNrUXVldWVSdW5uaW5nKTsKKworICAgIGlmIChtX29i
amVjdC0+bV90YXNrUXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fb2JqZWN0LT5tX3Rhc2tR
dWV1ZVJ1bm5pbmcgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fb2Jq
ZWN0LT5tX3Rhc2tRdWV1ZVswXS0+cnVuKCk7CisgICAgbV9vYmplY3QtPm1fdGFza1F1ZXVlLnJl
bW92ZSgwKTsKKworICAgIGlmIChtX29iamVjdC0+bV90YXNrUXVldWUuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIG1fb2JqZWN0LT5tX3Rhc2tRdWV1ZVJ1bm5pbmcgPSBmYWxzZTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHBvc3RUYXNrKG5ldyBTdGVwVGFzayhtX29iamVjdCkpOworfQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5oCmluZGV4IDkz
OTQ5NzY4NjU2ZmE2NjhlMjU5YjU2ODI2NmE0N2IxMDk1ODUyYWYuLjQ2ZGEzYTMxMjNhY2M3MjA2
NTFmMzBlZTVjOTZmYTdjYzdkYWYxODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuaApAQCAtNTMsMTkgKzUzLDQz
IEBAIHB1YmxpYzoKICAgICAvLyBNZXRob2RzIGFjY2Vzc2VkIGJ5IGxheW91dCB0ZXN0czoKICAg
ICB2b2lkIGFkZE1vY2tSZXN1bHQoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHRyYW5zY3JpcHQs
IGZsb2F0IGNvbmZpZGVuY2UpOwogICAgIHZvaWQgc2V0RXJyb3IoaW50IGNvZGUsIGNvbnN0IFdl
YktpdDo6V2ViU3RyaW5nJiBtZXNzYWdlKTsKKyAgICBib29sIGhhc0JlZW5BYm9ydGVkKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNCZWVuQWJvcnRlZDsgfQogCi0gICAgVGFza0xpc3QqIHRhc2tMaXN0
KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICAvLyBNZXRob2RzIGFjY2Vzc2VkIGZyb20g
VGFzayBvYmplY3RzOgogICAgIFdlYktpdDo6V2ViU3BlZWNoUmVjb2duaXplckNsaWVudCogY2xp
ZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KICAgICBXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml0
aW9uSGFuZGxlJiBoYW5kbGUoKSB7IHJldHVybiBtX2hhbmRsZTsgfQorICAgIFRhc2tMaXN0KiB0
YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CisKKyAgICBjbGFzcyBUYXNrIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIFRhc2soTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIqIHJlY29nbml6
ZXIpIDogbV9yZWNvZ25pemVyKHJlY29nbml6ZXIpIHsgfQorICAgICAgICB2aXJ0dWFsIH5UYXNr
KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBydW4oKSA9IDA7CisgICAgcHJvdGVjdGVkOgor
ICAgICAgICBNb2NrV2ViU3BlZWNoUmVjb2duaXplciogbV9yZWNvZ25pemVyOworICAgIH07CiAK
IHByaXZhdGU6CiAgICAgTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIoKTsKKyAgICB2b2lkIHN0YXJ0
VGFza1F1ZXVlKCk7CiAKICAgICBUYXNrTGlzdCBtX3Rhc2tMaXN0OwogICAgIFdlYktpdDo6V2Vi
U3BlZWNoUmVjb2duaXRpb25IYW5kbGUgbV9oYW5kbGU7CiAgICAgV2ViS2l0OjpXZWJTcGVlY2hS
ZWNvZ25pemVyQ2xpZW50KiBtX2NsaWVudDsKICAgICBWZWN0b3I8V2ViS2l0OjpXZWJTdHJpbmc+
IG1fbW9ja1RyYW5zY3JpcHRzOwogICAgIFZlY3RvcjxmbG9hdD4gbV9tb2NrQ29uZmlkZW5jZXM7
CisgICAgYm9vbCBtX2hhc0JlZW5BYm9ydGVkOworCisgICAgLy8gUXVldWUgb2YgdGFza3MgdG8g
YmUgcnVuLgorICAgIFZlY3RvcjxPd25QdHI8VGFzaz4gPiBtX3Rhc2tRdWV1ZTsKKyAgICBib29s
IG1fdGFza1F1ZXVlUnVubmluZzsKKworICAgIC8vIFRhc2sgZm9yIHN0ZXBwaW5nIHRoZSBxdWV1
ZS4KKyAgICBjbGFzcyBTdGVwVGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJTcGVlY2hS
ZWNvZ25pemVyPiB7CisgICAgcHVibGljOgorICAgICAgICBTdGVwVGFzayhNb2NrV2ViU3BlZWNo
UmVjb2duaXplciogb2JqZWN0KSA6IE1ldGhvZFRhc2s8TW9ja1dlYlNwZWVjaFJlY29nbml6ZXI+
KG9iamVjdCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJREU7
CisgICAgfTsKIH07CiAKICNlbmRpZiAvLyBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDI1ZmY5OTczOTdjOGJmZTdmMWU3ZDI5NDNhMzhkOWEyNjk1NzQ4NWYuLjNkNDA4NDNkYmFiMzdk
MGY1YmM0MjgxOTEyM2Q4ZGU3Y2YxNDEyZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0w
Ni0xOSAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNwZWVj
aCBKYXZhU2NyaXB0IEFQSTogU3BlZWNoUmVjb2duaXRpb24gc2hvdWxkIGhvb2sgdXAgd2l0aCBB
Y3RpdmVET01PYmplY3QgbW9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODkyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0byBjaGVjayB0aGF0IHNwZWVjaCByZWNvZ25p
dGlvbiBnZXRzIGFib3J0ZWQgd2hlbgorICAgICAgICBuYXZpZ2F0aW5nIGF3YXkgZnJvbSB0aGUg
cGFnZS4KKworICAgICAgICAqIGZhc3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3YXktZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9zY3JpcHRlZC9uYXZpZ2F0
ZS1hd2F5LWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc3BlZWNo
L3NjcmlwdGVkL25hdmlnYXRlLWF3YXktaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3YXkuaHRtbDogQWRkZWQuCisKIDIwMTItMDYt
MTkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAg
ICAgICBbRUZMXSBFRkwncyBMYXlvdXRUZXN0Q29udHJvbGxlciBkb2VzIG5vdCBzdXBwb3J0IHNl
dFRleHREaXJlY3Rpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3Njcmlw
dGVkL25hdmlnYXRlLWF3YXktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gv
c2NyaXB0ZWQvbmF2aWdhdGUtYXdheS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhiNTQxMGQ3
NzA5ZWFiNGU4ZDdlNjU3MjY2MWVhYmE5MmQyN2JjMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3YXktZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTkgQEAKK1Rlc3QgYmVoYXZpb3VyIHdoZW4gbmF2aWdhdGluZyBhd2F5IGZyb20g
YSBwYWdlIHVzaW5nIHRoZSBTcGVlY2ggSmF2YVNjcmlwdCBBUEkKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1RoZSBpZnJhbWUgd2FzIGxvYWRlZC4KK1BBU1MgJ3dlYmtpdFNwZWVj
aFJlY29nbml0aW9uJyBpbiBzZWxmIGlzIHRydWUKK1BBU1Mgd2Via2l0U3BlZWNoUmVjb2duaXRp
b24gPT0gbnVsbCBpcyBmYWxzZQorUEFTUyB0ZXN0UnVubmVyLmhhc01vY2tTcGVlY2hSZWNvZ25p
dGlvbkJlZW5BYm9ydGVkKCkgaXMgZmFsc2UKK2lmcmFtZTogQ3JlYXRlZCBTcGVlY2hSZWNvZ25p
dGlvbgoraWZyYW1lOiBjYWxsaW5nIHN0YXJ0KCkKK2lmcmFtZTogb25zdGFydAoraWZyYW1lOiBu
YXZpZ2F0aW5nIGF3YXkKK1RoZSBpZnJhbWUgd2FzIG5hdmlnYXRlZCBhd2F5LgorUEFTUyB0ZXN0
UnVubmVyLmhhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkJlZW5BYm9ydGVkKCkgaXMgdHJ1ZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3YXktaWZyYW1l
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRl
LWF3YXktaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2Y1Mzg5OGI2ZmJkOGY3MWYw
ZGEyZmIzNGU5ZDZjNTVjMDY4ZDYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9zcGVlY2gvc2NyaXB0ZWQvbmF2aWdhdGUtYXdheS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEgQEAKK1RoaXMgZmlsZSBpcyBtZWFudCB0byBiZSB1c2VkIGFzIHBhcnQgb2YgdGhlIG5h
dmlnYXRlLWF3YXkuaHRtbCB0ZXN0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVl
Y2gvc2NyaXB0ZWQvbmF2aWdhdGUtYXdheS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
c3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3YXktaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFh
YjM0MTJlMTdjN2E5ZTFjODEwNDc0MDhiZjY1NjViMjM5MTJiNwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3YXktaWZyYW1lLmh0
bWwKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisKK2Z1bmN0aW9uIGxvZyhtc2cpIHsKKyAgICBwYXJlbnQucG9zdE1lc3NhZ2UobXNnLCAnKicp
OworfQorCitmdW5jdGlvbiBzZXREZWZhdWx0SGFuZGxlcnMocikgeworICAgIGZvciAodmFyIHBy
b3AgaW4gcikgeworICAgICAgICBpZiAocHJvcC5tYXRjaCgnXm9uJykpIHsKKyAgICAgICAgICAg
IHJbcHJvcF0gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBsb2coJ3VuZXhwZWN0ZWQg
JyArIGV2ZW50LnR5cGUgKyAnIGV2ZW50IScpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorfQorCitmdW5jdGlvbiBydW4oKSB7CisgICAgaWYgKHdpbmRvdy50b3AgPT0gd2luZG93
LnNlbGYpIHsKKyAgICAgICAgLy8gV2UgYXJlIG5vdCBpbiBhbiBpZnJhbWUuCisgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdib2R5JykuaW5uZXJIVE1MID0gJ1RoaXMgZmlsZSBpcyBt
ZWFudCB0byBiZSB1c2VkIGFzIHBhcnQgb2YgdGhlIG5hdmlnYXRlLWF3YXkuaHRtbCB0ZXN0Lic7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3aW5kb3cuc3BlZWNocmVjbyA9IG5ldyB3
ZWJraXRTcGVlY2hSZWNvZ25pdGlvbigpOworICAgIGxvZygnQ3JlYXRlZCBTcGVlY2hSZWNvZ25p
dGlvbicpOworICAgIHNldERlZmF1bHRIYW5kbGVycyhzcGVlY2hyZWNvKTsKKworICAgIHNwZWVj
aHJlY28ub25zdGFydCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBsb2coJ29uc3RhcnQnKTsKKyAg
ICAgICAgbG9nKCduYXZpZ2F0aW5nIGF3YXknKTsKKyAgICAgICAgd2luZG93LmxvY2F0aW9uID0g
J2RhdGE6dGV4dC9odG1sLE5hdmlnYXRlZCBhd2F5Lic7CisgICAgfTsKKworICAgIGxvZygnY2Fs
bGluZyBzdGFydCgpJyk7CisgICAgc3BlZWNocmVjby5zdGFydCgpOworfQorCit3aW5kb3cub25s
b2FkID0gcnVuOworPC9zY3JpcHQ+CitUaGlzIGlmcmFtZSBjcmVhdGVzIGEgc3BlZWNocmVjbyBv
YmplY3QuCis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3Nj
cmlwdGVkL25hdmlnYXRlLWF3YXkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3Njcmlw
dGVkL25hdmlnYXRlLWF3YXkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjViZjhiZGIwMjUxOTIxNzcwMWEw
MzQ1N2M5ODNjNWZlMTdkMjc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9z
cGVlY2gvc2NyaXB0ZWQvbmF2aWdhdGUtYXdheS5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9D
VFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbignVGVzdCBiZWhhdmlvdXIgd2hlbiBu
YXZpZ2F0aW5nIGF3YXkgZnJvbSBhIHBhZ2UgdXNpbmcgdGhlIFNwZWVjaCBKYXZhU2NyaXB0IEFQ
SScpOworCitmdW5jdGlvbiBydW4oKSB7CisgICAgLy8gQ2hlY2sgYXZhaWxhYmlsaXR5IG9mIGNv
bnN0cnVjdG9ycy4KKyAgICBzaG91bGRCZVRydWUoIid3ZWJraXRTcGVlY2hSZWNvZ25pdGlvbicg
aW4gc2VsZiIpOworICAgIHNob3VsZEJlRmFsc2UoIndlYmtpdFNwZWVjaFJlY29nbml0aW9uID09
IG51bGwiKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgc2hvdWxkQmVG
YWxzZSgidGVzdFJ1bm5lci5oYXNNb2NrU3BlZWNoUmVjb2duaXRpb25CZWVuQWJvcnRlZCgpIik7
CisKKyAgICB3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRlYnVnKCdp
ZnJhbWU6ICcgKyBldmVudC5kYXRhKTsKKyAgICB9OworfQorCit3aW5kb3cuaWZyYW1lb25sb2Fk
Y291bnQgPSAwOworZnVuY3Rpb24gaWZyYW1lb25sb2FkKCkgeworICAgICsraWZyYW1lb25sb2Fk
Y291bnQ7CisKKyAgICBpZiAoaWZyYW1lb25sb2FkY291bnQgPT09IDEpIHsKKyAgICAgICAgLy8g
VGhlIGlmcmFtZSBoYXMgbG9hZGVkIGZvciB0aGUgZmlyc3QgdGltZS4KKyAgICAgICAgZGVidWco
J1RoZSBpZnJhbWUgd2FzIGxvYWRlZC4nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGRlYnVnKCdUaGUgaWZyYW1lIHdhcyBuYXZpZ2F0ZWQgYXdheS4nKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGVzdFJ1bm5lci5oYXNNb2NrU3Bl
ZWNoUmVjb2duaXRpb25CZWVuQWJvcnRlZCgpIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K3dpbmRvdy5vbmxvYWQgPSBydW47Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzxpZnJhbWUgaWQ9ImlmcmFtZSIgc3JjPSJuYXZpZ2F0ZS1hd2F5LWlmcmFtZS5o
dG1sIiBvbmxvYWQ9ImlmcmFtZW9ubG9hZCgpIiA+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148526</attachid>
            <date>2012-06-20 02:29:52 -0700</date>
            <delta_ts>2012-06-21 02:53:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89217-20120620102951.patch</filename>
            <type>text/plain</type>
            <size>24108</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWRkMGVmODI3Mzc5N2Qz
ZTIxODVkYmQ3ZDkyYjNiNTgzMzhlZTQ2Yy4uOTA1NjllYThkMDVmZDAwZDJiZmJhYTRlOGFjZmI0
NjVjYjg4N2UyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA2LTIwICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIEphdmFTY3Jp
cHQgQVBJOiBTcGVlY2hSZWNvZ25pdGlvbiBzaG91bGQgaG9vayB1cCB3aXRoIEFjdGl2ZURPTU9i
amVjdCBtb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFByZXZpb3VzbHksIHRoZSBTcGVlY2hSZWNvZ25pdGlvbiB3YXMga2VwdCBhbGl2ZSB3aGlsZSB3
YWl0aW5nIGZvcgorICAgICAgICBwZW5kaW5nIGV2ZW50cyBieSBtYWtpbmcgdGhlIGVtYmVkZGVy
IGhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdC4KKyAgICAgICAgV2Ugc2hvdWxkIGRvIHRo
aXMgYnkgdXNpbmcgQWN0aXZlRE9NT2JqZWN0J3Mgc2V0UGVuZGluZ0FjdGl2aXR5KCkgaW5zdGVh
ZC4KKworICAgICAgICBBbHNvLCBvdmVycmlkZSBBY3RpdmVET01PYmplY3Q6OnN0b3AoKSB0byBn
ZXQgbm90aWZpZWQgd2hlbiB0aGUgdXNlcgorICAgICAgICBsZWF2ZXMgdGhlIHBhZ2UuCisKKyAg
ICAgICAgVGVzdDogZmFzdC9zcGVlY2gvc2NyaXB0ZWQvbmF2aWdhdGUtYXdheS5odG1sCisKKyAg
ICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb246OmRpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvbi5oOgorICAgICAgICAoU3BlZWNoUmVjb2duaXRpb24pOgorCiAy
MDEyLTA2LTE5ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IENsaWNraW5nICJDbGVhciBhbGwgcHJvZmlsZXMiIHdoaWxl
IG9uZ29pbmcgcmVjb3JkaW5nIHNob3VsZCByZXNldCB0aGUgUHJvZmlsZUxhdW5jaGVyVmlldwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24u
Y3BwCmluZGV4IDhiZGMzNTNjODFhYjk0YmYwYjIzZmZkZjJkNDg3MThjZWExZDhiNzIuLjNjN2Q4
MDA3MjgzMDk1MWY2OGY2YTY3ZGUyODdlZTcyODk2NTYwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKQEAgLTQ2LDcgKzQ2
LDEwIEBAIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb24+IFNwZWVjaFJlY29nbml0aW9uOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCoKIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvbjo6
c3RhcnQoKQogewotICAgIEFTU0VSVChtX2NvbnRyb2xsZXIpOyAvLyBGSVhNRTogU3BlYyBzaG91
bGQgc2F5IHdoYXQgdG8gZG8gaWYgd2UgYXJlIGFscmVhZHkgc3RhcnRlZC4KKyAgICBBU1NFUlQo
bV9jb250cm9sbGVyKTsKKyAgICAvLyBGSVhNRTogU3BlYyBzaG91bGQgc2F5IHdoYXQgdG8gZG8g
aWYgd2UgYXJlIGFscmVhZHkgc3RhcnRlZC4KKworICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlz
KTsKICAgICBtX2NvbnRyb2xsZXItPnN0YXJ0KHRoaXMsIG1fZ3JhbW1hcnMuZ2V0KCksIG1fbGFu
ZywgbV9jb250aW51b3VzKTsKIH0KIApAQCAtMTIxLDYgKzEyNCw3IEBAIHZvaWQgU3BlZWNoUmVj
b2duaXRpb246OmRpZFN0YXJ0KCkKIHZvaWQgU3BlZWNoUmVjb2duaXRpb246OmRpZEVuZCgpCiB7
CiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmRFdmVudCwg
LypjYW5CdWJibGU9Ki9mYWxzZSwgLypjYW5jZWxhYmxlPSovZmFsc2UpKTsKKyAgICB1bnNldFBl
bmRpbmdBY3Rpdml0eSh0aGlzKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTcGVlY2hSZWNv
Z25pdGlvbjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CkBAIC0xMzMsNiArMTM3LDEyIEBAIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIFNwZWVjaFJlY29nbml0aW9uOjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3QKICAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CiB9CiAKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb246OnN0b3AoKQoreworICAgIGlm
IChoYXNQZW5kaW5nQWN0aXZpdHkoKSkKKyAgICAgICAgYWJvcnQoKTsKK30KKwogU3BlZWNoUmVj
b2duaXRpb246OlNwZWVjaFJlY29nbml0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fZ3JhbW1h
cnMoU3BlZWNoR3JhbW1hckxpc3Q6OmNyZWF0ZSgpKSAvLyBGSVhNRTogVGhlIHNwZWMgaXMgbm90
IGNsZWFyIG9uIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgZ3JhbW1hcnMgYXR0cmlidXRlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmgK
aW5kZXggM2ZjMjQ0MTY2ZTMzOGMzYjBmNjJjZmNmMDJmMDhiODVhNWQ1NTcwMy4uODM5YjZiZGUw
ZWFhODZiMTJmMGFhNjAwNGRiODViMDI0ZGFjNWYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5oCkBAIC00OSwxMiArNDksMTEgQEAg
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIH5TcGVlY2hSZWNvZ25pdGlvbigpOwogCisg
ICAgLy8gQXR0cmlidXRlcy4KICAgICBQYXNzUmVmUHRyPFNwZWVjaEdyYW1tYXJMaXN0PiBncmFt
bWFycygpIHsgcmV0dXJuIG1fZ3JhbW1hcnM7IH0KICAgICB2b2lkIHNldEdyYW1tYXJzKFBhc3NS
ZWZQdHI8U3BlZWNoR3JhbW1hckxpc3Q+IGdyYW1tYXJzKSB7IG1fZ3JhbW1hcnMgPSBncmFtbWFy
czsgfQotCiAgICAgU3RyaW5nIGxhbmcoKSB7IHJldHVybiBtX2xhbmc7IH0KICAgICB2b2lkIHNl
dExhbmcoY29uc3QgU3RyaW5nJiBsYW5nKSB7IG1fbGFuZyA9IGxhbmc7IH0KLQogICAgIGJvb2wg
Y29udGludW91cygpIHsgcmV0dXJuIG1fY29udGludW91czsgfQogICAgIHZvaWQgc2V0Q29udGlu
dW91cyhib29sIGNvbnRpbnVvdXMpIHsgbV9jb250aW51b3VzID0gY29udGludW91czsgfQogCkBA
IC03NywxMCArNzYsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZGlkU3RhcnQoKTsKICAgICB2b2lk
IGRpZEVuZCgpOwogCi0gICAgLy8gRXZlbnRUYXJnZXQKKyAgICAvLyBFdmVudFRhcmdldC4KICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0IE9WRVJSSURFOwogCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgorICAg
IHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CisKICAgICB1c2luZyBSZWZDb3VudGVkPFNw
ZWVjaFJlY29nbml0aW9uPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2du
aXRpb24+OjpkZXJlZjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDc2ZjFjMzRlMGM4NTg5YjczZDNiODYyZDMzZGFjMjhmNWE1MjRhYWEuLjNj
ZThlNjU3OTlmYjRlYWNkMzhjOTg0MTA3YzQyNTU1MjNkYWNmNzAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMi0w
Ni0yMCAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNwZWVj
aCBKYXZhU2NyaXB0IEFQSTogU3BlZWNoUmVjb2duaXRpb24gc2hvdWxkIGhvb2sgdXAgd2l0aCBB
Y3RpdmVET01PYmplY3QgbW9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODkyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSBtZXRob2QgZm9yIGNoZWNraW5nIHdoZXRoZXIgdGhlIG1vY2sgc3Bl
ZWNoCisgICAgICAgIHJlY29nbml0aW9uIHdhcyBhYm9ydGVkLgorCisgICAgICAgIEFsc28gcmVk
byB0aGUgd2F5IHRoZSBtb2NrIHBvc3RzIHRhc2tzLiBJbnN0ZWFkIG9mIHBvc3RpbmcgdGhlbSBh
bGwgYXQgb25jZSwKKyAgICAgICAgbWFpbnRhaW4gYW4gaW50ZXJuYWwgcXVldWUgb2YgdGFzayBv
YmplY3RzLCBhbmQgY2FsbCBwb3N0VGFzaygpIGZvciB0aGVtCisgICAgICAgIG9uY2UgYXQgdGhl
IHRpbWUuIFRoaXMgbWVhbnMgdGhhdCBmb3IgZXhhbXBsZSB3aGVuIHRoZSBwYWdlIGlzIG5hdmln
YXRlZAorICAgICAgICBhd2F5IGFuZCBhYm9ydCgpIGlzIGNhbGxlZCwgdGhhdCBjYWxsIGRvZXNu
J3QgZW5kIHVwIGFmdGVyIGEgYnVuY2gKKyAgICAgICAgb2YgcHJldmlvdXNseSBwb3N0ZWQgZXZl
bnRzIG9uIHRoZSBldmVudCBsb29wLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
Ojp3YXNNb2NrU3BlZWNoUmVjb2duaXRpb25BYm9ydGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJT
cGVlY2hSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2xpZW50Q2FsbFRhc2s6OkNs
aWVudENhbGxUYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVzdWx0VGFzazo6UmVzdWx0VGFzayk6
CisgICAgICAgIChXZWJLaXQ6Ok5vTWF0Y2hUYXNrOjpOb01hdGNoVGFzayk6CisgICAgICAgIChX
ZWJLaXQ6OkVycm9yVGFzazo6RXJyb3JUYXNrKToKKyAgICAgICAgKE1vY2tXZWJTcGVlY2hSZWNv
Z25pemVyOjpzdGFydCk6CisgICAgICAgIChNb2NrV2ViU3BlZWNoUmVjb2duaXplcjo6YWJvcnQp
OgorICAgICAgICAoTW9ja1dlYlNwZWVjaFJlY29nbml6ZXI6OnNldEVycm9yKToKKyAgICAgICAg
KE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjpNb2NrV2ViU3BlZWNoUmVjb2duaXplcik6CisgICAg
ICAgIChNb2NrV2ViU3BlZWNoUmVjb2duaXplcjo6c3RhcnRUYXNrUXVldWUpOgorICAgICAgICAo
TW9ja1dlYlNwZWVjaFJlY29nbml6ZXI6OlN0ZXBUYXNrOjpydW5JZlZhbGlkKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5oOgorICAg
ICAgICAoTW9ja1dlYlNwZWVjaFJlY29nbml6ZXI6Omhhc0JlZW5BYm9ydGVkKToKKyAgICAgICAg
KE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyKToKKyAgICAgICAgKE1vY2tXZWJTcGVlY2hSZWNvZ25p
emVyOjp0YXNrTGlzdCk6CisgICAgICAgIChUYXNrKToKKyAgICAgICAgKE1vY2tXZWJTcGVlY2hS
ZWNvZ25pemVyOjpUYXNrOjpUYXNrKToKKyAgICAgICAgKE1vY2tXZWJTcGVlY2hSZWNvZ25pemVy
OjpUYXNrOjp+VGFzayk6CisgICAgICAgIChTdGVwVGFzayk6CisgICAgICAgIChNb2NrV2ViU3Bl
ZWNoUmVjb2duaXplcjo6U3RlcFRhc2s6OlN0ZXBUYXNrKToKKwogMjAxMi0wNi0xOSAgUnl1YW4g
Q2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bUmVncmVzc2lv
bl0gQnVpbGQgYnJlYWsgYWZ0ZXIgcjEyMDc4NgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDEyMDE5N2UyNTYz
Y2RhZmY4NDFjODJlYjVkYWIzNGRiZWY4ZDIyZjMuLjA2ZjE0NmMxYzNkNWY5NTQzNTg1ODZiMjY3
OWQ3ZDhjYjFlOWNhNWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTExOCw2ICsxMTgsNyBAQCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIoVGVzdFNoZWxsKiBzaGVsbCkKICNp
ZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQogICAgIGJpbmRNZXRob2QoImFkZE1vY2tTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9ja1NwZWVjaFJl
Y29nbml0aW9uUmVzdWx0KTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrU3BlZWNoUmVjb2duaXRp
b25FcnJvciIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaFJlY29nbml0aW9u
RXJyb3IpOworICAgIGJpbmRNZXRob2QoIndhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQi
LCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6Ondhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQp
OwogI2VuZGlmCiAgICAgYmluZE1ldGhvZCgiYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnki
LCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KTsK
ICAgICBiaW5kTWV0aG9kKCJhZGRVc2VyU2NyaXB0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjph
ZGRVc2VyU2NyaXB0KTsKQEAgLTE5NjYsNiArMTk2NywxMyBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRNb2NrU3BlZWNoUmVjb2duaXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVudExp
c3QmCiAgICAgaWYgKE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyKiByZWNvZ25pemVyID0gbV9zaGVs
bC0+d2ViVmlld0hvc3QoKS0+bW9ja1NwZWVjaFJlY29nbml6ZXIoKSkKICAgICAgICAgcmVjb2du
aXplci0+c2V0RXJyb3IoYXJndW1lbnRzWzBdLnRvSW50MzIoKSwgY3BwVmFyaWFudFRvV2ViU3Ry
aW5nKGFyZ3VtZW50c1sxXSkpOwogfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjp3YXNN
b2NrU3BlZWNoUmVjb2duaXRpb25BYm9ydGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldChmYWxzZSk7CisgICAgaWYgKE1vY2tX
ZWJTcGVlY2hSZWNvZ25pemVyKiByZWNvZ25pemVyID0gbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+
bW9ja1NwZWVjaFJlY29nbml6ZXIoKSkKKyAgICAgICAgcmVzdWx0LT5zZXQocmVjb2duaXplci0+
d2FzQWJvcnRlZCgpKTsKK30KICNlbmRpZgogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
dGFydFNwZWVjaElucHV0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJp
YW50KiByZXN1bHQpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA1YTg3MjkzODg4N2EyYjIxMTYxMGI4YzZjNjUxYmUx
YjZlYTlhNTViLi5hZjM5YjJlZjY4NjBmNjM2MTY5YWI5NWE0ZTMwMjgyZjc3MDk2Zjg5IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmgKQEAgLTM3NSw2ICszNzUsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNDUklQVEVEX1NQ
RUVDSCkKICAgICB2b2lkIGFkZE1vY2tTcGVlY2hSZWNvZ25pdGlvblJlc3VsdChjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRNb2NrU3BlZWNoUmVjb2du
aXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9p
ZCB3YXNNb2NrU3BlZWNoUmVjb2duaXRpb25BYm9ydGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKICNlbmRpZgogICAgIHZvaWQgc3RhcnRTcGVlY2hJbnB1dChjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmNwcAppbmRleCBi
NTNlMTcwMWY1MjYxYTBkNzNiZTJiNjg3ODhiYjk5ODJiMDI0OWI0Li43MjA0NzMyZGU3NGJjNDE4
ZDM2YmUwOTlmNWIyYmZmZTk2OTI1MGNlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuY3BwCkBAIC0zNywzMSAr
MzcsMzEgQEAgbmFtZXNwYWNlIHsKIAogLy8gVGFzayBjbGFzcyBmb3IgY2FsbGluZyBhIGNsaWVu
dCBmdW5jdGlvbiB0aGF0IGRvZXMgbm90IHRha2UgYW55IHBhcmFtZXRlcnMuCiB0eXBlZGVmIHZv
aWQgKFdlYlNwZWVjaFJlY29nbml6ZXJDbGllbnQ6OipDbGllbnRGdW5jdGlvblBvaW50ZXIpKGNv
bnN0IFdlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJik7Ci1jbGFzcyBDbGllbnRDYWxsVGFzayA6
IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyPiB7CitjbGFzcyBDbGll
bnRDYWxsVGFzayA6IHB1YmxpYyBNb2NrV2ViU3BlZWNoUmVjb2duaXplcjo6VGFzayB7CiBwdWJs
aWM6CiAgICAgQ2xpZW50Q2FsbFRhc2soTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIqIG1vY2ssIENs
aWVudEZ1bmN0aW9uUG9pbnRlciBmdW5jdGlvbikKLSAgICAgICAgOiBNZXRob2RUYXNrPE1vY2tX
ZWJTcGVlY2hSZWNvZ25pemVyPihtb2NrKQorICAgICAgICA6IE1vY2tXZWJTcGVlY2hSZWNvZ25p
emVyOjpUYXNrKG1vY2spCiAgICAgICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikKICAgICB7CiAg
ICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERSB7IChtX29iamVj
dC0+Y2xpZW50KCktPiptX2Z1bmN0aW9uKShtX29iamVjdC0+aGFuZGxlKCkpOyB9CisgICAgdmly
dHVhbCB2b2lkIHJ1bigpIE9WRVJSSURFIHsgKG1fcmVjb2duaXplci0+Y2xpZW50KCktPiptX2Z1
bmN0aW9uKShtX3JlY29nbml6ZXItPmhhbmRsZSgpKTsgfQogCiBwcml2YXRlOgogICAgIENsaWVu
dEZ1bmN0aW9uUG9pbnRlciBtX2Z1bmN0aW9uOwogfTsKIAogLy8gVGFzayBmb3IgZGVsaXZlcmlu
ZyBhIHJlc3VsdCBldmVudC4KLWNsYXNzIFJlc3VsdFRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxN
b2NrV2ViU3BlZWNoUmVjb2duaXplcj4geworY2xhc3MgUmVzdWx0VGFzayA6IHB1YmxpYyBNb2Nr
V2ViU3BlZWNoUmVjb2duaXplcjo6VGFzayB7CiBwdWJsaWM6CiAgICAgUmVzdWx0VGFzayhNb2Nr
V2ViU3BlZWNoUmVjb2duaXplciogbW9jaywgY29uc3QgV2ViU3RyaW5nIHRyYW5zY3JpcHQsIGZs
b2F0IGNvbmZpZGVuY2UpCi0gICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoUmVjb2du
aXplcj4obW9jaykKKyAgICAgICAgOiBNb2NrV2ViU3BlZWNoUmVjb2duaXplcjo6VGFzayhtb2Nr
KQogICAgICAgICAsIG1fdHJhbnNjcmlwdCh0cmFuc2NyaXB0KQogICAgICAgICAsIG1fY29uZmlk
ZW5jZShjb25maWRlbmNlKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcnVuSWZW
YWxpZCgpIE9WRVJSSURFCisgICAgdmlydHVhbCB2b2lkIHJ1bigpIE9WRVJSSURFCiAgICAgewog
ICAgICAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiB0cmFuc2NyaXB0cyhzdGF0aWNfY2FzdDxzaXpl
X3Q+KDEpKTsKICAgICAgICAgV2ViVmVjdG9yPGZsb2F0PiBjb25maWRlbmNlcyhzdGF0aWNfY2Fz
dDxzaXplX3Q+KDEpKTsKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgICAgICBXZWJTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdCByZXM7CiAgICAgICAgIHJlcy5hc3NpZ24odHJhbnNjcmlwdHMs
IGNvbmZpZGVuY2VzLCB0cnVlKTsKIAotICAgICAgICBtX29iamVjdC0+Y2xpZW50KCktPmRpZFJl
Y2VpdmVSZXN1bHQobV9vYmplY3QtPmhhbmRsZSgpLCByZXMsIDAsIFdlYlZlY3RvcjxXZWJTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdD4oKSk7CisgICAgICAgIG1fcmVjb2duaXplci0+Y2xpZW50KCkt
PmRpZFJlY2VpdmVSZXN1bHQobV9yZWNvZ25pemVyLT5oYW5kbGUoKSwgcmVzLCAwLCBXZWJWZWN0
b3I8V2ViU3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+KCkpOwogICAgIH0KIAogcHJpdmF0ZToKQEAg
LTc5LDIzICs3OSwyMyBAQCBwcml2YXRlOgogfTsKIAogLy8gVGFzayBmb3IgZGVsaXZlcmluZyBh
IG5vbWF0Y2ggZXZlbnQuCi1jbGFzcyBOb01hdGNoVGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPE1v
Y2tXZWJTcGVlY2hSZWNvZ25pemVyPiB7CitjbGFzcyBOb01hdGNoVGFzayA6IHB1YmxpYyBNb2Nr
V2ViU3BlZWNoUmVjb2duaXplcjo6VGFzayB7CiBwdWJsaWM6Ci0gICAgTm9NYXRjaFRhc2soTW9j
a1dlYlNwZWVjaFJlY29nbml6ZXIqIG1vY2spIDogTWV0aG9kVGFzazxNb2NrV2ViU3BlZWNoUmVj
b2duaXplcj4obW9jaykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklE
RSB7IG1fb2JqZWN0LT5jbGllbnQoKS0+ZGlkUmVjZWl2ZU5vTWF0Y2gobV9vYmplY3QtPmhhbmRs
ZSgpLCBXZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCgpKTsgfQorICAgIE5vTWF0Y2hUYXNrKE1v
Y2tXZWJTcGVlY2hSZWNvZ25pemVyKiBtb2NrKSA6IE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjpU
YXNrKG1vY2spIHsgfQorICAgIHZpcnR1YWwgdm9pZCBydW4oKSBPVkVSUklERSB7IG1fcmVjb2du
aXplci0+Y2xpZW50KCktPmRpZFJlY2VpdmVOb01hdGNoKG1fcmVjb2duaXplci0+aGFuZGxlKCks
IFdlYlNwZWVjaFJlY29nbml0aW9uUmVzdWx0KCkpOyB9CiB9OwogCiAvLyBUYXNrIGZvciBkZWxp
dmVyaW5nIGFuIGVycm9yIGV2ZW50LgotY2xhc3MgRXJyb3JUYXNrIDogcHVibGljIE1ldGhvZFRh
c2s8TW9ja1dlYlNwZWVjaFJlY29nbml6ZXI+IHsKK2NsYXNzIEVycm9yVGFzayA6IHB1YmxpYyBN
b2NrV2ViU3BlZWNoUmVjb2duaXplcjo6VGFzayB7CiBwdWJsaWM6CiAgICAgRXJyb3JUYXNrKE1v
Y2tXZWJTcGVlY2hSZWNvZ25pemVyKiBtb2NrLCBpbnQgY29kZSwgY29uc3QgV2ViU3RyaW5nJiBt
ZXNzYWdlKQotICAgICAgICA6IE1ldGhvZFRhc2s8TW9ja1dlYlNwZWVjaFJlY29nbml6ZXI+KG1v
Y2spCisgICAgICAgIDogTW9ja1dlYlNwZWVjaFJlY29nbml6ZXI6OlRhc2sobW9jaykKICAgICAg
ICAgLCBtX2NvZGUoY29kZSkKICAgICAgICAgLCBtX21lc3NhZ2UobWVzc2FnZSkKICAgICB7CiAg
ICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERSB7IG1fb2JqZWN0
LT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUVycm9yKG1fb2JqZWN0LT5oYW5kbGUoKSwgbV9tZXNzYWdl
LCBzdGF0aWNfY2FzdDxXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50OjpFcnJvckNvZGU+KG1fY29k
ZSkpOyB9CisgICAgdmlydHVhbCB2b2lkIHJ1bigpIE9WRVJSSURFIHsgbV9yZWNvZ25pemVyLT5j
bGllbnQoKS0+ZGlkUmVjZWl2ZUVycm9yKG1fcmVjb2duaXplci0+aGFuZGxlKCksIG1fbWVzc2Fn
ZSwgc3RhdGljX2Nhc3Q8V2ViU3BlZWNoUmVjb2duaXplckNsaWVudDo6RXJyb3JDb2RlPihtX2Nv
ZGUpKTsgfQogCiBwcml2YXRlOgogICAgIGludCBtX2NvZGU7CkBAIC0xMTEsMjkgKzExMSwzMiBA
QCBQYXNzT3duUHRyPE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyPiBNb2NrV2ViU3BlZWNoUmVjb2du
aXplcjo6Y3JlYXRlKCkKIAogdm9pZCBNb2NrV2ViU3BlZWNoUmVjb2duaXplcjo6c3RhcnQoY29u
c3QgV2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUmIGhhbmRsZSwgY29uc3QgV2ViU3BlZWNoUmVj
b2duaXRpb25QYXJhbXMmIHBhcmFtcywgV2ViU3BlZWNoUmVjb2duaXplckNsaWVudCogY2xpZW50
KQogeworICAgIG1fd2FzQWJvcnRlZCA9IGZhbHNlOwogICAgIG1faGFuZGxlID0gaGFuZGxlOwog
ICAgIG1fY2xpZW50ID0gY2xpZW50OwogCi0gICAgcG9zdFRhc2sobmV3IENsaWVudENhbGxUYXNr
KHRoaXMsICZXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50OjpkaWRTdGFydCkpOwotICAgIHBvc3RU
YXNrKG5ldyBDbGllbnRDYWxsVGFzayh0aGlzLCAmV2ViU3BlZWNoUmVjb2duaXplckNsaWVudDo6
ZGlkU3RhcnRBdWRpbykpOwotICAgIHBvc3RUYXNrKG5ldyBDbGllbnRDYWxsVGFzayh0aGlzLCAm
V2ViU3BlZWNoUmVjb2duaXplckNsaWVudDo6ZGlkU3RhcnRTb3VuZCkpOwotICAgIHBvc3RUYXNr
KG5ldyBDbGllbnRDYWxsVGFzayh0aGlzLCAmV2ViU3BlZWNoUmVjb2duaXplckNsaWVudDo6ZGlk
U3RhcnRTcGVlY2gpKTsKKyAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoYWRvcHRQdHIobmV3IENsaWVu
dENhbGxUYXNrKHRoaXMsICZXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50OjpkaWRTdGFydCkpKTsK
KyAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoYWRvcHRQdHIobmV3IENsaWVudENhbGxUYXNrKHRoaXMs
ICZXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50OjpkaWRTdGFydEF1ZGlvKSkpOworICAgIG1fdGFz
a1F1ZXVlLmFwcGVuZChhZG9wdFB0cihuZXcgQ2xpZW50Q2FsbFRhc2sodGhpcywgJldlYlNwZWVj
aFJlY29nbml6ZXJDbGllbnQ6OmRpZFN0YXJ0U291bmQpKSk7CisgICAgbV90YXNrUXVldWUuYXBw
ZW5kKGFkb3B0UHRyKG5ldyBDbGllbnRDYWxsVGFzayh0aGlzLCAmV2ViU3BlZWNoUmVjb2duaXpl
ckNsaWVudDo6ZGlkU3RhcnRTcGVlY2gpKSk7CiAKICAgICBpZiAoIW1fbW9ja1RyYW5zY3JpcHRz
LmlzRW1wdHkoKSkgewogICAgICAgICBBU1NFUlQobV9tb2NrVHJhbnNjcmlwdHMuc2l6ZSgpID09
IG1fbW9ja0NvbmZpZGVuY2VzLnNpemUoKSk7CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX21vY2tUcmFuc2NyaXB0cy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHBvc3RUYXNr
KG5ldyBSZXN1bHRUYXNrKHRoaXMsIG1fbW9ja1RyYW5zY3JpcHRzW2ldLCBtX21vY2tDb25maWRl
bmNlc1tpXSkpOworICAgICAgICAgICAgbV90YXNrUXVldWUuYXBwZW5kKGFkb3B0UHRyKG5ldyBS
ZXN1bHRUYXNrKHRoaXMsIG1fbW9ja1RyYW5zY3JpcHRzW2ldLCBtX21vY2tDb25maWRlbmNlc1tp
XSkpKTsKIAogICAgICAgICBtX21vY2tUcmFuc2NyaXB0cy5jbGVhcigpOwogICAgICAgICBtX21v
Y2tDb25maWRlbmNlcy5jbGVhcigpOwogICAgIH0gZWxzZQotICAgICAgICBwb3N0VGFzayhuZXcg
Tm9NYXRjaFRhc2sodGhpcykpOworICAgICAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoYWRvcHRQdHIo
bmV3IE5vTWF0Y2hUYXNrKHRoaXMpKSk7CiAKLSAgICBwb3N0VGFzayhuZXcgQ2xpZW50Q2FsbFRh
c2sodGhpcywgJldlYlNwZWVjaFJlY29nbml6ZXJDbGllbnQ6OmRpZEVuZFNwZWVjaCkpOwotICAg
IHBvc3RUYXNrKG5ldyBDbGllbnRDYWxsVGFzayh0aGlzLCAmV2ViU3BlZWNoUmVjb2duaXplckNs
aWVudDo6ZGlkRW5kU291bmQpKTsKLSAgICBwb3N0VGFzayhuZXcgQ2xpZW50Q2FsbFRhc2sodGhp
cywgJldlYlNwZWVjaFJlY29nbml6ZXJDbGllbnQ6OmRpZEVuZEF1ZGlvKSk7Ci0gICAgcG9zdFRh
c2sobmV3IENsaWVudENhbGxUYXNrKHRoaXMsICZXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50Ojpk
aWRFbmQpKTsKKyAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoYWRvcHRQdHIobmV3IENsaWVudENhbGxU
YXNrKHRoaXMsICZXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50OjpkaWRFbmRTcGVlY2gpKSk7Cisg
ICAgbV90YXNrUXVldWUuYXBwZW5kKGFkb3B0UHRyKG5ldyBDbGllbnRDYWxsVGFzayh0aGlzLCAm
V2ViU3BlZWNoUmVjb2duaXplckNsaWVudDo6ZGlkRW5kU291bmQpKSk7CisgICAgbV90YXNrUXVl
dWUuYXBwZW5kKGFkb3B0UHRyKG5ldyBDbGllbnRDYWxsVGFzayh0aGlzLCAmV2ViU3BlZWNoUmVj
b2duaXplckNsaWVudDo6ZGlkRW5kQXVkaW8pKSk7CisgICAgbV90YXNrUXVldWUuYXBwZW5kKGFk
b3B0UHRyKG5ldyBDbGllbnRDYWxsVGFzayh0aGlzLCAmV2ViU3BlZWNoUmVjb2duaXplckNsaWVu
dDo6ZGlkRW5kKSkpOworCisgICAgc3RhcnRUYXNrUXVldWUoKTsKIH0KIAogdm9pZCBNb2NrV2Vi
U3BlZWNoUmVjb2duaXplcjo6c3RvcChjb25zdCBXZWJTcGVlY2hSZWNvZ25pdGlvbkhhbmRsZSYg
aGFuZGxlLCBXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50KiBjbGllbnQpCkBAIC0xNTAsOCArMTUz
LDEwIEBAIHZvaWQgTW9ja1dlYlNwZWVjaFJlY29nbml6ZXI6OmFib3J0KGNvbnN0IFdlYlNwZWVj
aFJlY29nbml0aW9uSGFuZGxlJiBoYW5kbGUsIFdlCiAgICAgbV9oYW5kbGUgPSBoYW5kbGU7CiAg
ICAgbV9jbGllbnQgPSBjbGllbnQ7CiAKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG1fdGFza1F1ZXVlLmNsZWFyKCk7CisgICAgbV93YXNB
Ym9ydGVkID0gdHJ1ZTsKKyAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoYWRvcHRQdHIobmV3IENsaWVu
dENhbGxUYXNrKHRoaXMsICZXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50OjpkaWRFbmQpKSk7Cisg
ICAgc3RhcnRUYXNrUXVldWUoKTsKIH0KIAogdm9pZCBNb2NrV2ViU3BlZWNoUmVjb2duaXplcjo6
YWRkTW9ja1Jlc3VsdChjb25zdCBXZWJTdHJpbmcmIHRyYW5zY3JpcHQsIGZsb2F0IGNvbmZpZGVu
Y2UpCkBAIC0xNjIsMTIgKzE2NywxNSBAQCB2b2lkIE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjph
ZGRNb2NrUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgdHJhbnNjcmlwdCwgZmxvYXQgYwogCiB2b2lk
IE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjpzZXRFcnJvcihpbnQgY29kZSwgY29uc3QgV2ViU3Ry
aW5nJiBtZXNzYWdlKQogewotICAgIG1fdGFza0xpc3QucmV2b2tlQWxsKCk7Ci0gICAgcG9zdFRh
c2sobmV3IEVycm9yVGFzayh0aGlzLCBjb2RlLCBtZXNzYWdlKSk7Ci0gICAgcG9zdFRhc2sobmV3
IENsaWVudENhbGxUYXNrKHRoaXMsICZXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50OjpkaWRFbmQp
KTsKKyAgICBtX3Rhc2tRdWV1ZS5jbGVhcigpOworICAgIG1fdGFza1F1ZXVlLmFwcGVuZChhZG9w
dFB0cihuZXcgRXJyb3JUYXNrKHRoaXMsIGNvZGUsIG1lc3NhZ2UpKSk7CisgICAgbV90YXNrUXVl
dWUuYXBwZW5kKGFkb3B0UHRyKG5ldyBDbGllbnRDYWxsVGFzayh0aGlzLCAmV2ViU3BlZWNoUmVj
b2duaXplckNsaWVudDo6ZGlkRW5kKSkpOworICAgIHN0YXJ0VGFza1F1ZXVlKCk7CiB9CiAKIE1v
Y2tXZWJTcGVlY2hSZWNvZ25pemVyOjpNb2NrV2ViU3BlZWNoUmVjb2duaXplcigpCisgICAgOiBt
X3dhc0Fib3J0ZWQoZmFsc2UpCisgICAgLCBtX3Rhc2tRdWV1ZVJ1bm5pbmcoZmFsc2UpCiB7CiB9
CiAKQEAgLTE3NSw1ICsxODMsMzIgQEAgTW9ja1dlYlNwZWVjaFJlY29nbml6ZXI6On5Nb2NrV2Vi
U3BlZWNoUmVjb2duaXplcigpCiB7CiB9CiAKK3ZvaWQgTW9ja1dlYlNwZWVjaFJlY29nbml6ZXI6
OnN0YXJ0VGFza1F1ZXVlKCkKK3sKKyAgICBpZiAobV90YXNrUXVldWVSdW5uaW5nKQorICAgICAg
ICByZXR1cm47CisgICAgcG9zdFRhc2sobmV3IFN0ZXBUYXNrKHRoaXMpKTsKKyAgICBtX3Rhc2tR
dWV1ZVJ1bm5pbmcgPSB0cnVlOworfQorCit2b2lkIE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOjpT
dGVwVGFzazo6cnVuSWZWYWxpZCgpCit7CisgICAgQVNTRVJUKG1fb2JqZWN0LT5tX3Rhc2tRdWV1
ZVJ1bm5pbmcpOworCisgICAgaWYgKG1fb2JqZWN0LT5tX3Rhc2tRdWV1ZS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgbV9vYmplY3QtPm1fdGFza1F1ZXVlUnVubmluZyA9IGZhbHNlOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV9vYmplY3QtPm1fdGFza1F1ZXVlWzBdLT5ydW4oKTsKKyAg
ICBtX29iamVjdC0+bV90YXNrUXVldWUucmVtb3ZlKDApOworCisgICAgaWYgKG1fb2JqZWN0LT5t
X3Rhc2tRdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9vYmplY3QtPm1fdGFza1F1ZXVlUnVu
bmluZyA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcG9zdFRhc2sobmV3
IFN0ZXBUYXNrKG1fb2JqZWN0KSk7Cit9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0NSSVBURURfU1BF
RUNIKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNw
ZWVjaFJlY29nbml6ZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJT
cGVlY2hSZWNvZ25pemVyLmgKaW5kZXggOTM5NDk3Njg2NTZmYTY2OGUyNTliNTY4MjY2YTQ3YjEw
OTU4NTJhZi4uNzcxNjE4NmQxZmYzODgzNGYwMjhmOTI0MWQ4MDg2OGI3OTI2MjgyYSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6
ZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVj
b2duaXplci5oCkBAIC01MywxOSArNTMsNDMgQEAgcHVibGljOgogICAgIC8vIE1ldGhvZHMgYWNj
ZXNzZWQgYnkgbGF5b3V0IHRlc3RzOgogICAgIHZvaWQgYWRkTW9ja1Jlc3VsdChjb25zdCBXZWJL
aXQ6OldlYlN0cmluZyYgdHJhbnNjcmlwdCwgZmxvYXQgY29uZmlkZW5jZSk7CiAgICAgdm9pZCBz
ZXRFcnJvcihpbnQgY29kZSwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIG1lc3NhZ2UpOworICAg
IGJvb2wgd2FzQWJvcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzQWJvcnRlZDsgfQogCi0gICAg
VGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICAvLyBNZXRo
b2RzIGFjY2Vzc2VkIGZyb20gVGFzayBvYmplY3RzOgogICAgIFdlYktpdDo6V2ViU3BlZWNoUmVj
b2duaXplckNsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KICAgICBXZWJLaXQ6
OldlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlJiBoYW5kbGUoKSB7IHJldHVybiBtX2hhbmRsZTsg
fQorICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CisKKyAg
ICBjbGFzcyBUYXNrIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFRhc2soTW9ja1dlYlNwZWVjaFJl
Y29nbml6ZXIqIHJlY29nbml6ZXIpIDogbV9yZWNvZ25pemVyKHJlY29nbml6ZXIpIHsgfQorICAg
ICAgICB2aXJ0dWFsIH5UYXNrKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBydW4oKSA9IDA7
CisgICAgcHJvdGVjdGVkOgorICAgICAgICBNb2NrV2ViU3BlZWNoUmVjb2duaXplciogbV9yZWNv
Z25pemVyOworICAgIH07CiAKIHByaXZhdGU6CiAgICAgTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIo
KTsKKyAgICB2b2lkIHN0YXJ0VGFza1F1ZXVlKCk7CiAKICAgICBUYXNrTGlzdCBtX3Rhc2tMaXN0
OwogICAgIFdlYktpdDo6V2ViU3BlZWNoUmVjb2duaXRpb25IYW5kbGUgbV9oYW5kbGU7CiAgICAg
V2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pemVyQ2xpZW50KiBtX2NsaWVudDsKICAgICBWZWN0b3I8
V2ViS2l0OjpXZWJTdHJpbmc+IG1fbW9ja1RyYW5zY3JpcHRzOwogICAgIFZlY3RvcjxmbG9hdD4g
bV9tb2NrQ29uZmlkZW5jZXM7CisgICAgYm9vbCBtX3dhc0Fib3J0ZWQ7CisKKyAgICAvLyBRdWV1
ZSBvZiB0YXNrcyB0byBiZSBydW4uCisgICAgVmVjdG9yPE93blB0cjxUYXNrPiA+IG1fdGFza1F1
ZXVlOworICAgIGJvb2wgbV90YXNrUXVldWVSdW5uaW5nOworCisgICAgLy8gVGFzayBmb3Igc3Rl
cHBpbmcgdGhlIHF1ZXVlLgorICAgIGNsYXNzIFN0ZXBUYXNrIDogcHVibGljIE1ldGhvZFRhc2s8
TW9ja1dlYlNwZWVjaFJlY29nbml6ZXI+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFN0ZXBUYXNr
KE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyKiBvYmplY3QpIDogTWV0aG9kVGFzazxNb2NrV2ViU3Bl
ZWNoUmVjb2duaXplcj4ob2JqZWN0KSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFs
aWQoKSBPVkVSUklERTsKKyAgICB9OwogfTsKIAogI2VuZGlmIC8vIEVOQUJMRShTQ1JJUFRFRF9T
UEVFQ0gpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYTI3NWVhZjdkMzBkMDE5NzNmYjM0MjEwZTBiMTQyZGM0ZDMyNjg1MC4u
MmRlOWJlNDA5ZjU0NzNmMDYwN2ZkMDJjZmRkYTM2ZDg1YmE3YWUxMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDEyLTA2LTIwICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3BlZWNoIEphdmFTY3JpcHQgQVBJOiBTcGVlY2hSZWNvZ25pdGlvbiBzaG91bGQg
aG9vayB1cCB3aXRoIEFjdGl2ZURPTU9iamVjdCBtb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRvIGNoZWNrIHRoYXQg
c3BlZWNoIHJlY29nbml0aW9uIGdldHMgYWJvcnRlZCB3aGVuCisgICAgICAgIG5hdmlnYXRpbmcg
YXdheSBmcm9tIHRoZSBwYWdlLgorCisgICAgICAgICogZmFzdC9zcGVlY2gvc2NyaXB0ZWQvbmF2
aWdhdGUtYXdheS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc3BlZWNoL3Nj
cmlwdGVkL25hdmlnYXRlLWF3YXktaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9zcGVlY2gvc2NyaXB0ZWQvbmF2aWdhdGUtYXdheS1pZnJhbWUuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9zcGVlY2gvc2NyaXB0ZWQvbmF2aWdhdGUtYXdheS5odG1sOiBBZGRl
ZC4KKwogMjAxMi0wNi0yMCAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkIHJlYmFzZWxpbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3YXktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvbmF2aWdhdGUtYXdheS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmNmMzczYTg4YjBkNjYyNmNlYzkwNDE3MzUxZjhlMDJkNGQwZDI3YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRl
LWF3YXktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3QgYmVoYXZpb3VyIHdoZW4g
bmF2aWdhdGluZyBhd2F5IGZyb20gYSBwYWdlIHVzaW5nIHRoZSBTcGVlY2ggSmF2YVNjcmlwdCBB
UEkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1RoZSBpZnJhbWUgd2FzIGxvYWRl
ZC4KK1BBU1MgJ3dlYmtpdFNwZWVjaFJlY29nbml0aW9uJyBpbiBzZWxmIGlzIHRydWUKK1BBU1Mg
d2Via2l0U3BlZWNoUmVjb2duaXRpb24gPT0gbnVsbCBpcyBmYWxzZQorUEFTUyB0ZXN0UnVubmVy
Lndhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQoKSBpcyBmYWxzZQoraWZyYW1lOiBDcmVh
dGVkIFNwZWVjaFJlY29nbml0aW9uCitpZnJhbWU6IGNhbGxpbmcgc3RhcnQoKQoraWZyYW1lOiBv
bnN0YXJ0CitpZnJhbWU6IG5hdmlnYXRpbmcgYXdheQorVGhlIGlmcmFtZSB3YXMgbmF2aWdhdGVk
IGF3YXkuCitQQVNTIHRlc3RSdW5uZXIud2FzTW9ja1NwZWVjaFJlY29nbml0aW9uQWJvcnRlZCgp
IGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9uYXZpZ2F0
ZS1hd2F5LWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3Jp
cHRlZC9uYXZpZ2F0ZS1hd2F5LWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NmNTM4
OThiNmZiZDhmNzFmMGRhMmZiMzRlOWQ2YzU1YzA2OGQ2MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3YXktaWZyYW1lLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxIEBACitUaGlzIGZpbGUgaXMgbWVhbnQgdG8gYmUgdXNlZCBhcyBw
YXJ0IG9mIHRoZSBuYXZpZ2F0ZS1hd2F5Lmh0bWwgdGVzdC4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3YXktaWZyYW1lLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9uYXZpZ2F0ZS1hd2F5LWlmcmFtZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJhYWIzNDEyZTE3YzdhOWUxYzgxMDQ3NDA4YmY2NTY1YjIzOTEyYjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9uYXZpZ2F0ZS1h
d2F5LWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgorCitmdW5jdGlvbiBsb2cobXNnKSB7CisgICAgcGFyZW50LnBvc3RNZXNz
YWdlKG1zZywgJyonKTsKK30KKworZnVuY3Rpb24gc2V0RGVmYXVsdEhhbmRsZXJzKHIpIHsKKyAg
ICBmb3IgKHZhciBwcm9wIGluIHIpIHsKKyAgICAgICAgaWYgKHByb3AubWF0Y2goJ15vbicpKSB7
CisgICAgICAgICAgICByW3Byb3BdID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgbG9n
KCd1bmV4cGVjdGVkICcgKyBldmVudC50eXBlICsgJyBldmVudCEnKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gcnVuKCkgeworICAgIGlmICh3aW5kb3cu
dG9wID09IHdpbmRvdy5zZWxmKSB7CisgICAgICAgIC8vIFdlIGFyZSBub3QgaW4gYW4gaWZyYW1l
LgorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm9keScpLmlubmVySFRNTCA9ICdU
aGlzIGZpbGUgaXMgbWVhbnQgdG8gYmUgdXNlZCBhcyBwYXJ0IG9mIHRoZSBuYXZpZ2F0ZS1hd2F5
Lmh0bWwgdGVzdC4nOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2luZG93LnNwZWVj
aHJlY28gPSBuZXcgd2Via2l0U3BlZWNoUmVjb2duaXRpb24oKTsKKyAgICBsb2coJ0NyZWF0ZWQg
U3BlZWNoUmVjb2duaXRpb24nKTsKKyAgICBzZXREZWZhdWx0SGFuZGxlcnMoc3BlZWNocmVjbyk7
CisKKyAgICBzcGVlY2hyZWNvLm9uc3RhcnQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgbG9nKCdv
bnN0YXJ0Jyk7CisgICAgICAgIGxvZygnbmF2aWdhdGluZyBhd2F5Jyk7CisgICAgICAgIHdpbmRv
dy5sb2NhdGlvbiA9ICdkYXRhOnRleHQvaHRtbCxOYXZpZ2F0ZWQgYXdheS4nOworICAgIH07CisK
KyAgICBsb2coJ2NhbGxpbmcgc3RhcnQoKScpOworICAgIHNwZWVjaHJlY28uc3RhcnQoKTsKK30K
Kword2luZG93Lm9ubG9hZCA9IHJ1bjsKKzwvc2NyaXB0PgorVGhpcyBpZnJhbWUgY3JlYXRlcyBh
IHNwZWVjaHJlY28gb2JqZWN0LgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3NwZWVjaC9zY3JpcHRlZC9uYXZpZ2F0ZS1hd2F5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaC9zY3JpcHRlZC9uYXZpZ2F0ZS1hd2F5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ZmYTFkNGU5
OGI4ODE5NjU4MzViMDI3MDM1OWQzMWE2MTIxNTk2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL25hdmlnYXRlLWF3YXkuaHRtbApAQCAtMCwwICsx
LDQ1IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oJ1Rlc3QgYmVo
YXZpb3VyIHdoZW4gbmF2aWdhdGluZyBhd2F5IGZyb20gYSBwYWdlIHVzaW5nIHRoZSBTcGVlY2gg
SmF2YVNjcmlwdCBBUEknKTsKKworZnVuY3Rpb24gcnVuKCkgeworICAgIC8vIENoZWNrIGF2YWls
YWJpbGl0eSBvZiBjb25zdHJ1Y3RvcnMuCisgICAgc2hvdWxkQmVUcnVlKCInd2Via2l0U3BlZWNo
UmVjb2duaXRpb24nIGluIHNlbGYiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJ3ZWJraXRTcGVlY2hS
ZWNvZ25pdGlvbiA9PSBudWxsIik7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHNob3VsZEJlRmFsc2UoInRlc3RSdW5uZXIud2FzTW9ja1NwZWVjaFJlY29nbml0aW9uQWJv
cnRlZCgpIik7CisKKyAgICB3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IGRlYnVnKCdpZnJhbWU6ICcgKyBldmVudC5kYXRhKTsKKyAgICB9OworfQorCit3aW5kb3cuaWZy
YW1lb25sb2FkY291bnQgPSAwOworZnVuY3Rpb24gaWZyYW1lb25sb2FkKCkgeworICAgICsraWZy
YW1lb25sb2FkY291bnQ7CisKKyAgICBpZiAoaWZyYW1lb25sb2FkY291bnQgPT09IDEpIHsKKyAg
ICAgICAgLy8gVGhlIGlmcmFtZSBoYXMgbG9hZGVkIGZvciB0aGUgZmlyc3QgdGltZS4KKyAgICAg
ICAgZGVidWcoJ1RoZSBpZnJhbWUgd2FzIGxvYWRlZC4nKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGRlYnVnKCdUaGUgaWZyYW1lIHdhcyBuYXZpZ2F0ZWQgYXdheS4nKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGVzdFJ1bm5lci53
YXNNb2NrU3BlZWNoUmVjb2duaXRpb25BYm9ydGVkKCkiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KKword2luZG93Lm9ubG9hZCA9IHJ1bjsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9Im5hdmlnYXRlLWF3YXktaWZy
YW1lLmh0bWwiIG9ubG9hZD0iaWZyYW1lb25sb2FkKCkiID4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="156281"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="156588"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>