<?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>65639</bug_id>
          
          <creation_ts>2011-08-03 13:35:21 -0700</creation_ts>
          <short_desc>Make atomic XML token</short_desc>
          <delta_ts>2011-08-03 16:19:05 -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>64396</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Vicki Pfau">jeffrey+webkit</reporter>
          <assigned_to name="Vicki Pfau">jeffrey+webkit</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>446059</commentid>
    <comment_count>0</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-08-03 13:35:21 -0700</bug_when>
    <thetext>Make atomic XML token</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446061</commentid>
    <comment_count>1</comment_count>
      <attachid>102820</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-08-03 13:37:02 -0700</bug_when>
    <thetext>Created attachment 102820
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446065</commentid>
    <comment_count>2</comment_count>
      <attachid>102820</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-08-03 13:43:15 -0700</bug_when>
    <thetext>Comment on attachment 102820
Patch

Attachment 102820 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9303123</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446069</commentid>
    <comment_count>3</comment_count>
      <attachid>102820</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-03 13:55:55 -0700</bug_when>
    <thetext>Comment on attachment 102820
Patch

Attachment 102820 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9301186</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446071</commentid>
    <comment_count>4</comment_count>
      <attachid>102822</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-08-03 13:59:10 -0700</bug_when>
    <thetext>Created attachment 102822
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446073</commentid>
    <comment_count>5</comment_count>
      <attachid>102822</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-03 14:04:42 -0700</bug_when>
    <thetext>Comment on attachment 102822
Patch

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

This looks great.  Did you run the parser benchmark?

&gt; Source/WebCore/html/parser/HTMLTokenizer.cpp:51
&gt; +// This has to go in a .cpp file, as the linker doesn&apos;t like it being included more than once.
&gt; +// We don&apos;t have an HTMLToken.cpp though, so this is the next best place.

Maybe we should add HTMLToken.cpp?  That seems sort of wasteful for just these three methods, but there could be more in the future.

&gt; Source/WebCore/xml/parser/MarkupTokenBase.h:377
&gt; +// FIXME: This class should eventually be named HTMLToken once we move the
&gt; +// exiting HTMLToken to be internal to the HTMLTokenizer.

This FIXME should probably be removed.  Turns out making this class internal isn&apos;t worthwhile.

&gt; Source/WebCore/xml/parser/XMLToken.h:436
&gt; +    { }

These should each be on their own line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446121</commentid>
    <comment_count>6</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-08-03 15:08:49 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 102822 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102822&amp;action=review
&gt; 
&gt; This looks great.  Did you run the parser benchmark?

I didn&apos;t until you reminded me, but they still appear to be on par. There doesn&apos;t seem to be any speed loss or gain.

&gt; &gt; Source/WebCore/html/parser/HTMLTokenizer.cpp:51
&gt; &gt; +// This has to go in a .cpp file, as the linker doesn&apos;t like it being included more than once.
&gt; &gt; +// We don&apos;t have an HTMLToken.cpp though, so this is the next best place.
&gt; 
&gt; Maybe we should add HTMLToken.cpp?  That seems sort of wasteful for just these three methods, but there could be more in the future.

Maybe so, but we can always do that later if we add more methods. I&apos;m not sure it makes sense to add the files now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446129</commentid>
    <comment_count>7</comment_count>
      <attachid>102836</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-08-03 15:20:24 -0700</bug_when>
    <thetext>Created attachment 102836
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446188</commentid>
    <comment_count>8</comment_count>
      <attachid>102836</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-03 16:18:57 -0700</bug_when>
    <thetext>Comment on attachment 102836
Patch for landing

Clearing flags on attachment: 102836

Committed r92325: &lt;http://trac.webkit.org/changeset/92325&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446189</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-03 16:19:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102820</attachid>
            <date>2011-08-03 13:37:02 -0700</date>
            <delta_ts>2011-08-03 13:59:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65639-20110803133701.patch</filename>
            <type>text/plain</type>
            <size>21435</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIyNDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNzk3YjIzOWM3OTdlM2Ux
OTM4N2I1NWIwMzJjNmZjNjRjZDBmNTkzLi5hN2Q3ZGZiNDlhMmQ1NmI3NWI0MDY3NDQwMWFmOGVi
MzQ4MjUzYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDgtMDMgIEplZmZy
ZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGF0b21pYyBYTUwgdG9r
ZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRl
IGEgc2hhcmVkIEF0b21pY01hcmt1cFRva2VuQmFzZSB0aGF0IGlzIHNoYXJlZCBieSBBdG9taWNI
VE1MVG9rZW4gYW5kIHRoZSBuZXcgQXRvbWljWE1MVG9rZW4KKworICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzZXRGb3JjZVF1
aXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OkF0b21pY0hUTUxUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OmZvcmNlUXVpcmtzKToKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ojo6bmFtZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjo6OnVzZXNOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ojo6dXNlc0F0dHJpYnV0ZXMpOgorICAgICAgICAqIHhtbC9wYXJzZXIv
TWFya3VwVG9rZW5CYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNNYXJrdXBUb2tlbkJh
c2U6OkF0b21pY01hcmt1cFRva2VuQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNNYXJr
dXBUb2tlbkJhc2U6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljTWFya3VwVG9rZW5C
YXNlOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY01hcmt1cFRva2VuQmFzZTo6c2V0
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNNYXJrdXBUb2tlbkJhc2U6OnNlbGZDbG9z
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY01hcmt1cFRva2VuQmFzZTo6Z2V0QXR0cmli
dXRlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNNYXJrdXBUb2tlbkJhc2U6OmF0dHJp
YnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljTWFya3VwVG9rZW5CYXNlOjp0YWtlQXRy
aWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY01hcmt1cFRva2VuQmFzZTo6Y2hhcmFj
dGVycyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNNYXJrdXBUb2tlbkJhc2U6OmNvbW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljTWFya3VwVG9rZW5CYXNlOjpwdWJsaWNJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY01hcmt1cFRva2VuQmFzZTo6c3lzdGVtSWRl
bnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjo6OmluaXRpYWxpemVBdHRyaWJ1dGVzKToKKyAg
ICAgICAgKiB4bWwvcGFyc2VyL1hNTFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNY
TUxUb2tlbjo6QXRvbWljWE1MVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljWE1MVG9r
ZW46OnByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNYTUxUb2tlbjo6dGFyZ2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OkF0b21pY1hNTFRva2VuOjpkYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkF0b21pY1hNTFRva2VuOjp4bWxWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21p
Y1hNTFRva2VuOjp4bWxTdGFuZGFsb25lKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTFRva2Vu
aXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6Om5hbWVGb3JBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Ojp1c2VzTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjo6OnVzZXNBdHRyaWJ1
dGVzKToKKwogMjAxMS0wOC0wMiAgSmVmZnJleSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBuYW1lc3BhY2UgcHJlZml4IHN1cHBvcnQgaW4gWE1MIHRva2VuaXplcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAppbmRleCAxNDc5ZDBkNWUyNDI3ODk5YmEw
MzljZDUzMDEwOTQ1MDQ4NGMwZjU4Li5iMGNhZDFhMjkwYTUxM2Y2OTBjOWEwOGZhZmJiYjNmYzhm
NWFkNmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAtODAsMTkx
ICs4MCwyNiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlw
ZXM6OkRPQ1RZUEUpOwogICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2ZvcmNlUXVpcmtzID0gdHJ1
ZTsKICAgICB9Ci0KIH07CiAKIC8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBldmVudHVhbGx5
IGJlIG5hbWVkIEhUTUxUb2tlbiBvbmNlIHdlIG1vdmUgdGhlCiAvLyBleGl0aW5nIEhUTUxUb2tl
biB0byBiZSBpbnRlcm5hbCB0byB0aGUgSFRNTFRva2VuaXplci4KLWNsYXNzIEF0b21pY0hUTUxU
b2tlbiB7CitjbGFzcyBBdG9taWNIVE1MVG9rZW4gOiBwdWJsaWMgQXRvbWljTWFya3VwVG9rZW5C
YXNlPEhUTUxUb2tlbj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF0b21pY0hUTUxUb2tl
bik7CiBwdWJsaWM6Ci0gICAgQXRvbWljSFRNTFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCi0gICAg
ICAgIDogbV90eXBlKHRva2VuLnR5cGUoKSkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAobV90eXBl
KSB7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQ6Ci0gICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEhUTUxUb2tlblR5cGVzOjpET0NUWVBFOgotICAgICAgICAgICAgbV9uYW1lID0gQXRvbWlj
U3RyaW5nKHRva2VuLm5hbWUoKS5kYXRhKCksIHRva2VuLm5hbWUoKS5zaXplKCkpOwotICAgICAg
ICAgICAgbV9kb2N0eXBlRGF0YSA9IHRva2VuLm1fZG9jdHlwZURhdGEucmVsZWFzZSgpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZToK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpTdGFydFRh
ZzoKLSAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOiB7Ci0gICAgICAgICAgICBt
X3NlbGZDbG9zaW5nID0gdG9rZW4uc2VsZkNsb3NpbmcoKTsKLSAgICAgICAgICAgIG1fbmFtZSA9
IEF0b21pY1N0cmluZyh0b2tlbi5uYW1lKCkuZGF0YSgpLCB0b2tlbi5uYW1lKCkuc2l6ZSgpKTsK
LSAgICAgICAgICAgIGluaXRpYWxpemVBdHRyaWJ1dGVzKHRva2VuLmF0dHJpYnV0ZXMoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVz
OjpDb21tZW50OgotICAgICAgICAgICAgbV9kYXRhID0gU3RyaW5nKHRva2VuLmNvbW1lbnQoKS5k
YXRhKCksIHRva2VuLmNvbW1lbnQoKS5zaXplKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcjoKLSAgICAgICAgICAgIG1fZXh0ZXJu
YWxDaGFyYWN0ZXJzID0gJnRva2VuLmNoYXJhY3RlcnMoKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Cisg
ICAgQXRvbWljSFRNTFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pIDogQXRvbWljTWFya3VwVG9rZW5C
YXNlPEhUTUxUb2tlbj4oJnRva2VuKSB7IH0KIAogICAgIEF0b21pY0hUTUxUb2tlbihIVE1MVG9r
ZW5UeXBlczo6VHlwZSB0eXBlLCBBdG9taWNTdHJpbmcgbmFtZSwgUGFzc1JlZlB0cjxOYW1lZE5v
ZGVNYXA+IGF0dHJpYnV0ZXMgPSAwKQotICAgICAgICA6IG1fdHlwZSh0eXBlKQotICAgICAgICAs
IG1fbmFtZShuYW1lKQotICAgICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKHVzZXNOYW1lKCkpOwotICAgIH0KLQotICAgIEhUTUxUb2tlblR5cGVz
OjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLQotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQodXNlc05hbWUoKSk7
Ci0gICAgICAgIHJldHVybiBtX25hbWU7Ci0gICAgfQotCi0gICAgdm9pZCBzZXROYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh1c2VzTmFtZSgpKTsK
LSAgICAgICAgbV9uYW1lID0gbmFtZTsKLSAgICB9Ci0KLSAgICBib29sIHNlbGZDbG9zaW5nKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0
YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKLSAgICAgICAgcmV0
dXJuIG1fc2VsZkNsb3Npbmc7Ci0gICAgfQotCi0gICAgQXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJ
dGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAgICBB
U1NFUlQodXNlc0F0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIGlmICghbV9hdHRyaWJ1dGVzKQotICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXMtPmdldEF0dHJp
YnV0ZUl0ZW0oYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCi0gICAgTmFtZWROb2RlTWFwKiBhdHRy
aWJ1dGVzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh1c2VzQXR0cmlidXRlcygpKTsK
LSAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcy5nZXQoKTsKLSAgICB9Ci0KLSAgICBQYXNzUmVm
UHRyPE5hbWVkTm9kZU1hcD4gdGFrZUF0cmlidXRlcygpCi0gICAgewotICAgICAgICBBU1NFUlQo
dXNlc0F0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXMucmVsZWFzZSgp
OwotICAgIH0KLQotICAgIGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlY3RvciYgY2hhcmFjdGVycygp
IGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpD
aGFyYWN0ZXIpOwotICAgICAgICByZXR1cm4gKm1fZXh0ZXJuYWxDaGFyYWN0ZXJzOwotICAgIH0K
LQotICAgIGNvbnN0IFN0cmluZyYgY29tbWVudCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NF
UlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50KTsKLSAgICAgICAgcmV0dXJuIG1f
ZGF0YTsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1pc3Np
bmcgcHVibGljIGlkZW50aWZlciBhbmQgYW4gZW1wdHkgb25lLgotICAgIFdURjo6VmVjdG9yPFVD
aGFyPiYgcHVibGljSWRlbnRpZmllcigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90
eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKLSAgICAgICAgcmV0dXJuIG1fZG9jdHlw
ZURhdGEtPm1fcHVibGljSWRlbnRpZmllcjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogRGlzdGlu
Z3Vpc2ggYmV0d2VlbiBhIG1pc3Npbmcgc3lzdGVtIGlkZW50aWZlciBhbmQgYW4gZW1wdHkgb25l
LgotICAgIFdURjo6VmVjdG9yPFVDaGFyPiYgc3lzdGVtSWRlbnRpZmllcigpIGNvbnN0Ci0gICAg
ewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKLSAg
ICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllcjsKLSAgICB9Cisg
ICAgICAgIDogQXRvbWljTWFya3VwVG9rZW5CYXNlPEhUTUxUb2tlbj4odHlwZSwgbmFtZSwgYXR0
cmlidXRlcykKKyAgICB7IH0KIAogICAgIGJvb2wgZm9yY2VRdWlya3MoKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CiAgICAg
ICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX2ZvcmNlUXVpcmtzOwogICAgIH0KLQotcHJpdmF0
ZToKLSAgICBIVE1MVG9rZW5UeXBlczo6VHlwZSBtX3R5cGU7Ci0KLSAgICB2b2lkIGluaXRpYWxp
emVBdHRyaWJ1dGVzKGNvbnN0IEhUTUxUb2tlbjo6QXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcyk7
Ci0gICAgCi0gICAgYm9vbCB1c2VzTmFtZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2Vu
VHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEU7Ci0gICAg
fQotCi0gICAgYm9vbCB1c2VzQXR0cmlidXRlcygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OkVuZFRhZzsKLSAgICB9Ci0KLSAgICAvLyAibmFtZSIgZm9yIERPQ1RZUEUsIFN0
YXJ0VGFnLCBhbmQgRW5kVGFnCi0gICAgQXRvbWljU3RyaW5nIG1fbmFtZTsKLQotICAgIC8vICJk
YXRhIiBmb3IgQ29tbWVudAotICAgIFN0cmluZyBtX2RhdGE7Ci0KLSAgICAvLyAiY2hhcmFjdGVy
cyIgZm9yIENoYXJhY3RlcgotICAgIC8vCi0gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjb3B5IHRo
ZSB0aGUgY2hhcmFjdGVycyBvdXQgb2YgdGhlIEhUTUxUb2tlbiwgc28gd2UKLSAgICAvLyBrZWVw
IGEgcG9pbnRlciB0byBpdHMgYnVmZmVyIGluc3RlYWQuICBUaGlzIGJ1ZmZlciBpcyBvd25lZCBi
eSB0aGUKLSAgICAvLyBIVE1MVG9rZW4gYW5kIGNhdXNlcyBhIGxpZmV0aW1lIGRlcGVuZGVuY2Ug
YmV0d2VlbiB0aGVzZSBvYmplY3RzLgotICAgIC8vCi0gICAgLy8gRklYTUU6IEFkZCBhIG1lY2hh
bmlzbSBmb3IgImludGVybmFsaXppbmciIHRoZSBjaGFyYWN0ZXJzIHdoZW4gdGhlCi0gICAgLy8g
ICAgICAgIEhUTUxUb2tlbiBpcyBkZXN0cnVjdGVkLgotICAgIGNvbnN0IEhUTUxUb2tlbjo6RGF0
YVZlY3RvciogbV9leHRlcm5hbENoYXJhY3RlcnM7Ci0KLSAgICAvLyBGb3IgRE9DVFlQRQotICAg
IE93blB0cjxIVE1MVG9rZW5UeXBlczo6RG9jdHlwZURhdGE+IG1fZG9jdHlwZURhdGE7Ci0KLSAg
ICAvLyBGb3IgU3RhcnRUYWcgYW5kIEVuZFRhZwotICAgIGJvb2wgbV9zZWxmQ2xvc2luZzsKLQot
ICAgIFJlZlB0cjxOYW1lZE5vZGVNYXA+IG1fYXR0cmlidXRlczsKIH07CiAKLWlubGluZSB2b2lk
IEF0b21pY0hUTUxUb2tlbjo6aW5pdGlhbGl6ZUF0dHJpYnV0ZXMoY29uc3QgSFRNTFRva2VuOjpB
dHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKQotewotICAgIHNpemVfdCBzaXplID0gYXR0cmlidXRl
cy5zaXplKCk7Ci0gICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2F0dHJp
YnV0ZXMgPSBOYW1lZE5vZGVNYXA6OmNyZWF0ZSgpOwotICAgIG1fYXR0cmlidXRlcy0+cmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewotICAgICAgICBjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYgYXR0cmlidXRlID0g
YXR0cmlidXRlc1tpXTsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZS5tX25hbWUuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBh
YmxlIHRvIGFkZCB0aGUgZm9sbG93aW5nIEFTU0VSVCBvbmNlIHdlIGZpeAotICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI5NzEKLSAgICAgICAgLy8g
ICBBU1NFUlQoYXR0cmlidXRlLm1fbmFtZVJhbmdlLm1fc3RhcnQpOwotICAgICAgICBBU1NFUlQo
YXR0cmlidXRlLm1fbmFtZVJhbmdlLm1fZW5kKTsKLSAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZS5t
X3ZhbHVlUmFuZ2UubV9zdGFydCk7Ci0gICAgICAgIEFTU0VSVChhdHRyaWJ1dGUubV92YWx1ZVJh
bmdlLm1fZW5kKTsKLQotICAgICAgICBTdHJpbmcgbmFtZShhdHRyaWJ1dGUubV9uYW1lLmRhdGEo
KSwgYXR0cmlidXRlLm1fbmFtZS5zaXplKCkpOwotICAgICAgICBTdHJpbmcgdmFsdWUoYXR0cmli
dXRlLm1fdmFsdWUuZGF0YSgpLCBhdHRyaWJ1dGUubV92YWx1ZS5zaXplKCkpOwotICAgICAgICBt
X2F0dHJpYnV0ZXMtPmluc2VydEF0dHJpYnV0ZShBdHRyaWJ1dGU6OmNyZWF0ZU1hcHBlZChuYW1l
LCB2YWx1ZSksIGZhbHNlKTsKLSAgICB9Ci19Ci0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwCmluZGV4IGRmZDc2YzYzZjI4NWE4Yjk3
ZTBmNmMxYjgwZjU2NGIwYjk3MDYxMDIuLmIzOTc3NjhmODYzMTc5NTYxOTI2ZWE5MTlmMzJjMTY2
NTBmYzAxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tl
bml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIu
Y3BwCkBAIC00Nyw2ICs0NywyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKKy8vIFRoaXMgaGFzIHRvIGdvIGluIGEgLmNwcCBmaWxlLCBhcyB0
aGUgbGlua2VyIGRvZXNuJ3QgbGlrZSBpdCBiZWluZyBpbmNsdWRlZCBtb3JlIHRoYW4gb25jZS4K
Ky8vIFdlIGRvbid0IGhhdmUgYW4gSFRNTFRva2VuLmNwcCB0aG91Z2gsIHNvIHRoaXMgaXMgdGhl
IG5leHQgYmVzdCBwbGFjZS4KK3RlbXBsYXRlPD4KK1F1YWxpZmllZE5hbWUgQXRvbWljTWFya3Vw
VG9rZW5CYXNlPEhUTUxUb2tlbj46Om5hbWVGb3JBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlQmFz
ZSYgYXR0cmlidXRlKSBjb25zdAoreworICAgIHJldHVybiBRdWFsaWZpZWROYW1lKG51bGxBdG9t
LCBBdG9taWNTdHJpbmcoYXR0cmlidXRlLm1fbmFtZS5kYXRhKCksIGF0dHJpYnV0ZS5tX25hbWUu
c2l6ZSgpKSwgbnVsbEF0b20pOworfQorCit0ZW1wbGF0ZTw+Citib29sIEF0b21pY01hcmt1cFRv
a2VuQmFzZTxIVE1MVG9rZW4+Ojp1c2VzTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHlw
ZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVz
OjpFbmRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFOworfQorCit0ZW1w
bGF0ZTw+Citib29sIEF0b21pY01hcmt1cFRva2VuQmFzZTxIVE1MVG9rZW4+Ojp1c2VzQXR0cmli
dXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3Rh
cnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWc7Cit9CisKIG5hbWVzcGFj
ZSB7CiAKIGlubGluZSBVQ2hhciB0b0xvd2VyQ2FzZShVQ2hhciBjYykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oCmluZGV4IGIzOTA4OTYyYTNlZjFmZDc4NjU4
ZDNjOWVkMjE3NzdkYjQzZGJlMmIuLjYxYWIwZDk0Y2QzNzhjZmMyY2VhZTZiODQwOTkzOTYxMDk1
MDc0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5C
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaApA
QCAtNjYsMTMgKzY2LDE0IEBAIHB1YmxpYzoKICAgICBXVEY6OlZlY3RvcjxVQ2hhciwgMzI+IG1f
dmFsdWU7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlU2V0LCB0eXBlbmFtZSBEb2N0eXBl
RGF0YSA9IERvY3R5cGVEYXRhQmFzZSwgdHlwZW5hbWUgQXR0cmlidXRlVHlwZSA9IEF0dHJpYnV0
ZUJhc2U+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlU2V0LCB0eXBlbmFtZSBEb2N0eXBlRGF0YVR5
cGUgPSBEb2N0eXBlRGF0YUJhc2UsIHR5cGVuYW1lIEF0dHJpYnV0ZVR5cGUgPSBBdHRyaWJ1dGVC
YXNlPgogY2xhc3MgTWFya3VwVG9rZW5CYXNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShN
YXJrdXBUb2tlbkJhc2UpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHR5cGVkZWYgVHlwZVNldCBUeXBlOwogICAgIHR5cGVkZWYgQXR0cmlidXRlVHlwZSBBdHRy
aWJ1dGU7CisgICAgdHlwZWRlZiBEb2N0eXBlRGF0YVR5cGUgRG9jdHlwZURhdGE7CiAKICAgICB0
eXBlZGVmIFdURjo6VmVjdG9yPEF0dHJpYnV0ZSwgMTA+IEF0dHJpYnV0ZUxpc3Q7CiAgICAgdHlw
ZWRlZiBXVEY6OlZlY3RvcjxVQ2hhciwgMTAyND4gRGF0YVZlY3RvcjsKQEAgLTM1MCwxMCArMzUx
LDExIEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG1fZGF0YTsKICAgICB9CiAKLSAgICAv
LyBGSVhNRTogSSdtIG5vdCBzdXJlIHdoYXQgdGhlIGZpbmFsIHJlbGF0aW9uc2hpcCBiZXR3ZWVu
IEhUTUxUb2tlbiBhbmQKLSAgICAvLyBBdG9taWNIVE1MVG9rZW4gd2lsbCBiZS4gSSdtIG1hcmtp
bmcgdGhpcyBhIGZyaWVuZCBmb3Igbm93LCBidXQgd2UnbGwKKyAgICAvLyBGSVhNRTogSSdtIG5v
dCBzdXJlIHdoYXQgdGhlIGZpbmFsIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIE1hcmt1cFRva2VuQmFz
ZSBhbmQKKyAgICAvLyBBdG9taWNNYXJrdXBUb2tlbkJhc2Ugd2lsbCBiZS4gSSdtIG1hcmtpbmcg
dGhpcyBhIGZyaWVuZCBmb3Igbm93LCBidXQgd2UnbGwKICAgICAvLyB3YW50IHRvIGVuZCB1cCB3
aXRoIGEgY2xlYW5lciBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgdHdvIGNsYXNzZXMuCi0gICAgZnJp
ZW5kIGNsYXNzIEF0b21pY0hUTUxUb2tlbjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUb2tlbj4K
KyAgICBmcmllbmQgY2xhc3MgQXRvbWljTWFya3VwVG9rZW5CYXNlOwogCiAgICAgdHlwZW5hbWUg
VHlwZTo6VHlwZSBtX3R5cGU7CiAgICAgdHlwZW5hbWUgQXR0cmlidXRlOjpSYW5nZSBtX3Jhbmdl
OyAvLyBBbHdheXMgc3RhcnRzIGF0IHplcm8uCkBAIC0zNzEsNiArMzczLDE4MCBAQCBwcm90ZWN0
ZWQ6CiAgICAgQXR0cmlidXRlKiBtX2N1cnJlbnRBdHRyaWJ1dGU7CiB9OwogCisvLyBGSVhNRTog
VGhpcyBjbGFzcyBzaG91bGQgZXZlbnR1YWxseSBiZSBuYW1lZCBIVE1MVG9rZW4gb25jZSB3ZSBt
b3ZlIHRoZQorLy8gZXhpdGluZyBIVE1MVG9rZW4gdG8gYmUgaW50ZXJuYWwgdG8gdGhlIEhUTUxU
b2tlbml6ZXIuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUb2tlbj4KK2NsYXNzIEF0b21pY01hcmt1cFRv
a2VuQmFzZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXRvbWljTWFya3VwVG9rZW5CYXNl
KTsKK3B1YmxpYzoKKyAgICBBdG9taWNNYXJrdXBUb2tlbkJhc2UoVG9rZW4qIHRva2VuKQorICAg
ICAgICA6IG1fdHlwZSh0b2tlbi0+dHlwZSgpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRva2Vu
KTsKKworICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgICAgICBjYXNlIFRva2VuOjpUeXBl
OjpVbmluaXRpYWxpemVkOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6RE9DVFlQRToKKyAgICAg
ICAgICAgIG1fbmFtZSA9IEF0b21pY1N0cmluZyh0b2tlbi0+bmFtZSgpLmRhdGEoKSwgdG9rZW4t
Pm5hbWUoKS5zaXplKCkpOworICAgICAgICAgICAgbV9kb2N0eXBlRGF0YSA9IHRva2VuLT5tX2Rv
Y3R5cGVEYXRhLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRv
a2VuOjpUeXBlOjpFbmRPZkZpbGU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBU
b2tlbjo6VHlwZTo6U3RhcnRUYWc6CisgICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkVuZFRhZzog
eworICAgICAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRva2VuLT5zZWxmQ2xvc2luZygpOworICAg
ICAgICAgICAgbV9uYW1lID0gQXRvbWljU3RyaW5nKHRva2VuLT5uYW1lKCkuZGF0YSgpLCB0b2tl
bi0+bmFtZSgpLnNpemUoKSk7CisgICAgICAgICAgICBpbml0aWFsaXplQXR0cmlidXRlcyh0b2tl
bi0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGNhc2UgVG9rZW46OlR5cGU6OkNvbW1lbnQ6CisgICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmco
dG9rZW4tPmNvbW1lbnQoKS5kYXRhKCksIHRva2VuLT5jb21tZW50KCkuc2l6ZSgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpDaGFyYWN0ZXI6CisgICAg
ICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVycyA9ICZ0b2tlbi0+Y2hhcmFjdGVycygpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIEF0b21pY01hcmt1cFRva2VuQmFzZSh0eXBlbmFtZSBUb2tl
bjo6VHlwZTo6VHlwZSB0eXBlLCBBdG9taWNTdHJpbmcgbmFtZSwgUGFzc1JlZlB0cjxOYW1lZE5v
ZGVNYXA+IGF0dHJpYnV0ZXMgPSAwKQorICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAs
IG1fbmFtZShuYW1lKQorICAgICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHVzZXNOYW1lKCkpOworICAgIH0KKworICAgIHR5cGVuYW1lIFRva2Vu
OjpUeXBlOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQodXNlc05h
bWUoKSk7CisgICAgICAgIHJldHVybiBtX25hbWU7CisgICAgfQorCisgICAgdm9pZCBzZXROYW1l
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh1c2VzTmFt
ZSgpKTsKKyAgICAgICAgbV9uYW1lID0gbmFtZTsKKyAgICB9CisKKyAgICBib29sIHNlbGZDbG9z
aW5nKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVG9rZW46OlR5cGU6
OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBUb2tlbjo6VHlwZTo6RW5kVGFnKTsKKyAgICAgICAgcmV0
dXJuIG1fc2VsZkNsb3Npbmc7CisgICAgfQorCisgICAgQXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJ
dGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICBB
U1NFUlQodXNlc0F0dHJpYnV0ZXMoKSk7CisgICAgICAgIGlmICghbV9hdHRyaWJ1dGVzKQorICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXMtPmdldEF0dHJp
YnV0ZUl0ZW0oYXR0cmlidXRlTmFtZSk7CisgICAgfQorCisgICAgTmFtZWROb2RlTWFwKiBhdHRy
aWJ1dGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCh1c2VzQXR0cmlidXRlcygpKTsK
KyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcy5nZXQoKTsKKyAgICB9CisKKyAgICBQYXNzUmVm
UHRyPE5hbWVkTm9kZU1hcD4gdGFrZUF0cmlidXRlcygpCisgICAgeworICAgICAgICBBU1NFUlQo
dXNlc0F0dHJpYnV0ZXMoKSk7CisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXMucmVsZWFzZSgp
OworICAgIH0KKworICAgIGNvbnN0IHR5cGVuYW1lIFRva2VuOjpEYXRhVmVjdG9yJiBjaGFyYWN0
ZXJzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVG9rZW46OlR5cGU6
OkNoYXJhY3Rlcik7CisgICAgICAgIHJldHVybiAqbV9leHRlcm5hbENoYXJhY3RlcnM7CisgICAg
fQorCisgICAgY29uc3QgU3RyaW5nJiBjb21tZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gVG9rZW46OlR5cGU6OkNvbW1lbnQpOworICAgICAgICByZXR1cm4gbV9k
YXRhOworICAgIH0KKworICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2lu
ZyBwdWJsaWMgaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCisgICAgV1RGOjpWZWN0b3I8VUNo
YXI+JiBwdWJsaWNJZGVudGlmaWVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gVG9rZW46OlR5cGU6OkRPQ1RZUEUpOworICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0
YS0+bV9wdWJsaWNJZGVudGlmaWVyOworICAgIH0KKworICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlz
aCBiZXR3ZWVuIGEgbWlzc2luZyBzeXN0ZW0gaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCisg
ICAgV1RGOjpWZWN0b3I8VUNoYXI+JiBzeXN0ZW1JZGVudGlmaWVyKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVG9rZW46OlR5cGU6OkRPQ1RZUEUpOworICAgICAgICBy
ZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyOworICAgIH0KKworcHJvdGVj
dGVkOgorICAgIHR5cGVuYW1lIFRva2VuOjpUeXBlOjpUeXBlIG1fdHlwZTsKKworICAgIHZvaWQg
aW5pdGlhbGl6ZUF0dHJpYnV0ZXMoY29uc3QgdHlwZW5hbWUgVG9rZW46OkF0dHJpYnV0ZUxpc3Qm
IGF0dHJpYnV0ZXMpOworICAgIFF1YWxpZmllZE5hbWUgbmFtZUZvckF0dHJpYnV0ZShjb25zdCB0
eXBlbmFtZSBUb2tlbjo6QXR0cmlidXRlJikgY29uc3Q7CisKKyAgICBib29sIHVzZXNOYW1lKCkg
Y29uc3Q7CisKKyAgICBib29sIHVzZXNBdHRyaWJ1dGVzKCkgY29uc3Q7CisKKyAgICAvLyAibmFt
ZSIgZm9yIERPQ1RZUEUsIFN0YXJ0VGFnLCBhbmQgRW5kVGFnCisgICAgQXRvbWljU3RyaW5nIG1f
bmFtZTsKKworICAgIC8vICJkYXRhIiBmb3IgQ29tbWVudAorICAgIFN0cmluZyBtX2RhdGE7CisK
KyAgICAvLyAiY2hhcmFjdGVycyIgZm9yIENoYXJhY3RlcgorICAgIC8vCisgICAgLy8gV2UgZG9u
J3Qgd2FudCB0byBjb3B5IHRoZSB0aGUgY2hhcmFjdGVycyBvdXQgb2YgdGhlIFRva2VuLCBzbyB3
ZQorICAgIC8vIGtlZXAgYSBwb2ludGVyIHRvIGl0cyBidWZmZXIgaW5zdGVhZC4gVGhpcyBidWZm
ZXIgaXMgb3duZWQgYnkgdGhlCisgICAgLy8gVG9rZW4gYW5kIGNhdXNlcyBhIGxpZmV0aW1lIGRl
cGVuZGVuY2UgYmV0d2VlbiB0aGVzZSBvYmplY3RzLgorICAgIC8vCisgICAgLy8gRklYTUU6IEFk
ZCBhIG1lY2hhbmlzbSBmb3IgImludGVybmFsaXppbmciIHRoZSBjaGFyYWN0ZXJzIHdoZW4gdGhl
CisgICAgLy8gICAgICAgIEhUTUxUb2tlbiBpcyBkZXN0cnVjdGVkLgorICAgIGNvbnN0IHR5cGVu
YW1lIFRva2VuOjpEYXRhVmVjdG9yKiBtX2V4dGVybmFsQ2hhcmFjdGVyczsKKworICAgIC8vIEZv
ciBET0NUWVBFCisgICAgT3duUHRyPHR5cGVuYW1lIFRva2VuOjpEb2N0eXBlRGF0YT4gbV9kb2N0
eXBlRGF0YTsKKworICAgIC8vIEZvciBTdGFydFRhZyBhbmQgRW5kVGFnCisgICAgYm9vbCBtX3Nl
bGZDbG9zaW5nOworCisgICAgUmVmUHRyPE5hbWVkTm9kZU1hcD4gbV9hdHRyaWJ1dGVzOworfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVG9rZW4+CitpbmxpbmUgdm9pZCBBdG9taWNNYXJrdXBUb2tl
bkJhc2U8VG9rZW4+Ojppbml0aWFsaXplQXR0cmlidXRlcyhjb25zdCB0eXBlbmFtZSBUb2tlbjo6
QXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcykKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IGF0dHJpYnV0
ZXMuc2l6ZSgpOworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hdHRy
aWJ1dGVzID0gTmFtZWROb2RlTWFwOjpjcmVhdGUoKTsKKyAgICBtX2F0dHJpYnV0ZXMtPnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKKyAgICAgICAgY29uc3QgdHlwZW5hbWUgVG9rZW46OkF0dHJpYnV0ZSYgYXR0cmli
dXRlID0gYXR0cmlidXRlc1tpXTsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZS5tX25hbWUuaXNFbXB0
eSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBiZSBhYmxlIHRvIGFkZCB0aGUgZm9sbG93aW5nIEFTU0VSVCBvbmNlIHdlIGZpeAorICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI5NzEKKyAgICAg
ICAgLy8gICBBU1NFUlQoYXR0cmlidXRlLm1fbmFtZVJhbmdlLm1fc3RhcnQpOworICAgICAgICBB
U1NFUlQoYXR0cmlidXRlLm1fbmFtZVJhbmdlLm1fZW5kKTsKKyAgICAgICAgQVNTRVJUKGF0dHJp
YnV0ZS5tX3ZhbHVlUmFuZ2UubV9zdGFydCk7CisgICAgICAgIEFTU0VSVChhdHRyaWJ1dGUubV92
YWx1ZVJhbmdlLm1fZW5kKTsKKworICAgICAgICBTdHJpbmcgdmFsdWUoYXR0cmlidXRlLm1fdmFs
dWUuZGF0YSgpLCBhdHRyaWJ1dGUubV92YWx1ZS5zaXplKCkpOworICAgICAgICBtX2F0dHJpYnV0
ZXMtPmluc2VydEF0dHJpYnV0ZShBdHRyaWJ1dGU6OmNyZWF0ZU1hcHBlZChuYW1lRm9yQXR0cmli
dXRlKGF0dHJpYnV0ZSksIHZhbHVlKSwgZmFsc2UpOworICAgIH0KK30KKwogfQogCiAjZW5kaWYg
Ly8gTWFya3VwVG9rZW5CYXNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW4uaAppbmRl
eCA0YzEyZTIxOGMwZGJlMTBkYTZhYTJkMjRmNGExYzRjNDAzOWY3NTA4Li5iZjRjNTYxYjM5MDBk
OTlkYjI1MTA5NTJiYWM1MDQyN2VmYmI2MGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxU
b2tlbi5oCkBAIC0xMzcsNyArMTM3LDcgQEAgcHVibGljOgogICAgICAgICBtX3R5cGUgPSBYTUxU
b2tlblR5cGVzOjpYTUxEZWNsYXJhdGlvbjsKICAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEg
PSBhZG9wdFB0cihuZXcgWE1MRGVjbGFyYXRpb25EYXRhKCkpOwogICAgIH0KLSAgICAKKwogICAg
IHZvaWQgYXBwZW5kVG9YTUxWZXJzaW9uKFVDaGFyIGNoYXJhY3RlcikKICAgICB7CiAgICAgICAg
IEFTU0VSVChjaGFyYWN0ZXIpOwpAQCAtMzg4LDggKzM4OCw5IEBAIHB1YmxpYzoKICNlbmRpZiAv
LyBOREVCVUcKIAogcHJpdmF0ZToKLQotICAgIHR5cGVkZWYgRG9jdHlwZURhdGFCYXNlIERvY3R5
cGVEYXRhOworICAgIC8vIEF0b21pY1hNTFRva2VuIG5lZWRzIHRvIHN0ZWFsIHNvbWUgb2Ygb3Vy
IHBvaW50ZXJzIGZyb20gdXMKKyAgICAvLyBGSVhNRTogYWRkIHRha2UqIGZ1bmN0aW9ucworICAg
IGZyaWVuZCBjbGFzcyBBdG9taWNYTUxUb2tlbjsKIAogICAgIC8vICJ0YXJnZXQiIGZvciBQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24sICJwcmVmaXgiIGZvciBTdGFydFRhZyBhbmQgRW5kVGFnCiAgICAg
RGF0YVZlY3RvciBtX3RhcmdldDsKQEAgLTM5OCw2ICszOTksODAgQEAgcHJpdmF0ZToKICAgICBP
d25QdHI8WE1MRGVjbGFyYXRpb25EYXRhPiBtX3htbERlY2xhcmF0aW9uRGF0YTsKIH07CiAKK2Ns
YXNzIEF0b21pY1hNTFRva2VuIDogcHVibGljIEF0b21pY01hcmt1cFRva2VuQmFzZTxYTUxUb2tl
bj4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF0b21pY1hNTFRva2VuKTsKK3B1YmxpYzoK
KyAgICBBdG9taWNYTUxUb2tlbihYTUxUb2tlbiYgdG9rZW4pCisgICAgICAgIDogQXRvbWljTWFy
a3VwVG9rZW5CYXNlPFhNTFRva2VuPigmdG9rZW4pCisgICAgeworICAgICAgICBzd2l0Y2ggKG1f
dHlwZSkgeworICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OlByb2Nlc3NpbmdJbnN0cnVjdGlv
bjoKKyAgICAgICAgICAgIG1fbmFtZSA9IEF0b21pY1N0cmluZyh0b2tlbi50YXJnZXQoKS5kYXRh
KCksIHRva2VuLnRhcmdldCgpLnNpemUoKSk7CisgICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmco
dG9rZW4uZGF0YSgpLmRhdGEoKSwgdG9rZW4uZGF0YSgpLnNpemUoKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpYTUxEZWNsYXJhdGlvbjoKKyAgICAg
ICAgICAgIG1feG1sRGVjbGFyYXRpb25EYXRhID0gdG9rZW4ubV94bWxEZWNsYXJhdGlvbkRhdGEu
cmVsZWFzZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBl
czo6U3RhcnRUYWc6CisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6RW5kVGFnOiB7CisgICAg
ICAgICAgICBpZiAodG9rZW4ucHJlZml4KCkuc2l6ZSgpKQorICAgICAgICAgICAgICAgIG1fcHJl
Zml4ID0gQXRvbWljU3RyaW5nKHRva2VuLnByZWZpeCgpLmRhdGEoKSwgdG9rZW4ucHJlZml4KCku
c2l6ZSgpKTsKKyAgICAgICAgICAgIGluaXRpYWxpemVBdHRyaWJ1dGVzKHRva2VuLmF0dHJpYnV0
ZXMoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFhNTFRv
a2VuVHlwZXM6OkNEQVRBOgorICAgICAgICAgICAgbV9kYXRhID0gU3RyaW5nKHRva2VuLmRhdGEo
KS5kYXRhKCksIHRva2VuLmRhdGEoKS5zaXplKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6RW50aXR5OgorICAgICAgICAgICAgbV9uYW1lID0gQXRv
bWljU3RyaW5nKHRva2VuLm5hbWUoKS5kYXRhKCksIHRva2VuLm5hbWUoKS5zaXplKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIEF0b21pY1hNTFRva2VuKFhNTFRva2VuVHlwZXM6OlR5cGUg
dHlwZSwgQXRvbWljU3RyaW5nIG5hbWUsIFBhc3NSZWZQdHI8TmFtZWROb2RlTWFwPiBhdHRyaWJ1
dGVzID0gMCkKKyAgICAgICAgOiBBdG9taWNNYXJrdXBUb2tlbkJhc2U8WE1MVG9rZW4+KHR5cGUs
IG5hbWUsIGF0dHJpYnV0ZXMpCisgICAgeyB9CisKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHBy
ZWZpeCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlw
ZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgICAg
ICByZXR1cm4gbV9wcmVmaXg7CisgICAgfQorCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0YXJn
ZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVz
OjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOworICAgICAgICByZXR1cm4gbV9uYW1lOworICAgIH0K
KworICAgIGNvbnN0IFN0cmluZyYgZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
bV90eXBlID09IFhNTFRva2VuVHlwZXM6OkNEQVRBIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVz
OjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0K
KworICAgIFdURjo6VmVjdG9yPFVDaGFyPiYgeG1sVmVyc2lvbigpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlhNTERlY2xhcmF0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX3ZlcnNpb247CisgICAgfQorCisg
ICAgYm9vbCB4bWxTdGFuZGFsb25lKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gWE1MVG9rZW5UeXBlczo6WE1MRGVjbGFyYXRpb24pOworICAgICAgICByZXR1cm4gbV94
bWxEZWNsYXJhdGlvbkRhdGEtPm1faGFzU3RhbmRhbG9uZSAmJiBtX3htbERlY2xhcmF0aW9uRGF0
YS0+bV9zdGFuZGFsb25lOworICAgIH0KKworcHJpdmF0ZToKKyAgICAvLyAicHJlZml4IiBmb3Ig
U3RhcnRUYWcsIEVuZFRhZworICAgIEF0b21pY1N0cmluZyBtX3ByZWZpeDsKKworICAgIC8vIEZv
ciBYTUwgZGVjbGFyYXRpb24KKyAgICBPd25QdHI8WE1MVG9rZW46OlhNTERlY2xhcmF0aW9uRGF0
YT4gbV94bWxEZWNsYXJhdGlvbkRhdGE7Cit9OworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuY3BwCmluZGV4IDk3OTgwNjI0YzZjODRiZDJjYjg5
Yzk1YTM2YjRhZTcyZTExZTRjNWEuLjQ3YzYyZDk3NWYwMjdlMzBkMzI0MDFiNjhkNTRkNDYwOGJm
ZTY2ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW5pemVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHAKQEAg
LTQyLDYgKzQyLDI2IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorLy8gVGhpcyBoYXMgdG8gZ28gaW4gYSAuY3BwIGZpbGUsIGFzIHRoZSBsaW5rZXIgZG9l
c24ndCBsaWtlIGl0IGJlaW5nIGluY2x1ZGVkIG1vcmUgdGhhbiBvbmNlLgorLy8gV2UgZG9uJ3Qg
aGF2ZSBhbiBYTUxUb2tlbi5jcHAgdGhvdWdoLCBzbyB0aGlzIGlzIHRoZSBuZXh0IGJlc3QgcGxh
Y2UuCit0ZW1wbGF0ZTw+CitRdWFsaWZpZWROYW1lIEF0b21pY01hcmt1cFRva2VuQmFzZTxYTUxU
b2tlbj46Om5hbWVGb3JBdHRyaWJ1dGUoY29uc3QgdHlwZW5hbWUgWE1MVG9rZW46OkF0dHJpYnV0
ZSYgYXR0cmlidXRlKSBjb25zdAoreworICAgIHJldHVybiBRdWFsaWZpZWROYW1lKGF0dHJpYnV0
ZS5tX3ByZWZpeC5pc0VtcHR5KCkgPyBudWxsQXRvbSA6IEF0b21pY1N0cmluZyhhdHRyaWJ1dGUu
bV9wcmVmaXguZGF0YSgpLCBhdHRyaWJ1dGUubV9wcmVmaXguc2l6ZSgpKSwgQXRvbWljU3RyaW5n
KGF0dHJpYnV0ZS5tX25hbWUuZGF0YSgpLCBhdHRyaWJ1dGUubV9uYW1lLnNpemUoKSksIG51bGxB
dG9tKTsKK30KKwordGVtcGxhdGU8PgorYm9vbCBBdG9taWNNYXJrdXBUb2tlbkJhc2U8WE1MVG9r
ZW4+Ojp1c2VzTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBYTUxUb2tlblR5
cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6RW5kVGFnIHx8IG1fdHlw
ZSA9PSBYTUxUb2tlblR5cGVzOjpET0NUWVBFIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpF
bnRpdHk7Cit9CisKK3RlbXBsYXRlPD4KK2Jvb2wgQXRvbWljTWFya3VwVG9rZW5CYXNlPFhNTFRv
a2VuPjo6dXNlc0F0dHJpYnV0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGUgPT0gWE1M
VG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6OkVuZFRhZzsK
K30KKwogbmFtZXNwYWNlIHsKIAogaW5saW5lIGJvb2wgaXNWYWxpZE5hbWVTdGFydChVQ2hhciBj
YykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102822</attachid>
            <date>2011-08-03 13:59:10 -0700</date>
            <delta_ts>2011-08-03 15:20:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65639-20110803135909.patch</filename>
            <type>text/plain</type>
            <size>21426</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIyNDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNzk3YjIzOWM3OTdlM2Ux
OTM4N2I1NWIwMzJjNmZjNjRjZDBmNTkzLi5hN2Q3ZGZiNDlhMmQ1NmI3NWI0MDY3NDQwMWFmOGVi
MzQ4MjUzYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDgtMDMgIEplZmZy
ZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGF0b21pYyBYTUwgdG9r
ZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRl
IGEgc2hhcmVkIEF0b21pY01hcmt1cFRva2VuQmFzZSB0aGF0IGlzIHNoYXJlZCBieSBBdG9taWNI
VE1MVG9rZW4gYW5kIHRoZSBuZXcgQXRvbWljWE1MVG9rZW4KKworICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzZXRGb3JjZVF1
aXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OkF0b21pY0hUTUxUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OmZvcmNlUXVpcmtzKToKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ojo6bmFtZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjo6OnVzZXNOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ojo6dXNlc0F0dHJpYnV0ZXMpOgorICAgICAgICAqIHhtbC9wYXJzZXIv
TWFya3VwVG9rZW5CYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNNYXJrdXBUb2tlbkJh
c2U6OkF0b21pY01hcmt1cFRva2VuQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNNYXJr
dXBUb2tlbkJhc2U6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljTWFya3VwVG9rZW5C
YXNlOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY01hcmt1cFRva2VuQmFzZTo6c2V0
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNNYXJrdXBUb2tlbkJhc2U6OnNlbGZDbG9z
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY01hcmt1cFRva2VuQmFzZTo6Z2V0QXR0cmli
dXRlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNNYXJrdXBUb2tlbkJhc2U6OmF0dHJp
YnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljTWFya3VwVG9rZW5CYXNlOjp0YWtlQXRy
aWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY01hcmt1cFRva2VuQmFzZTo6Y2hhcmFj
dGVycyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNNYXJrdXBUb2tlbkJhc2U6OmNvbW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljTWFya3VwVG9rZW5CYXNlOjpwdWJsaWNJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY01hcmt1cFRva2VuQmFzZTo6c3lzdGVtSWRl
bnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjo6OmluaXRpYWxpemVBdHRyaWJ1dGVzKToKKyAg
ICAgICAgKiB4bWwvcGFyc2VyL1hNTFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNY
TUxUb2tlbjo6QXRvbWljWE1MVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljWE1MVG9r
ZW46OnByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNYTUxUb2tlbjo6dGFyZ2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OkF0b21pY1hNTFRva2VuOjpkYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkF0b21pY1hNTFRva2VuOjp4bWxWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21p
Y1hNTFRva2VuOjp4bWxTdGFuZGFsb25lKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTFRva2Vu
aXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6Om5hbWVGb3JBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Ojp1c2VzTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjo6OnVzZXNBdHRyaWJ1
dGVzKToKKwogMjAxMS0wOC0wMiAgSmVmZnJleSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBuYW1lc3BhY2UgcHJlZml4IHN1cHBvcnQgaW4gWE1MIHRva2VuaXplcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAppbmRleCAxNDc5ZDBkNWUyNDI3ODk5YmEw
MzljZDUzMDEwOTQ1MDQ4NGMwZjU4Li5iMGNhZDFhMjkwYTUxM2Y2OTBjOWEwOGZhZmJiYjNmYzhm
NWFkNmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAtODAsMTkx
ICs4MCwyNiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlw
ZXM6OkRPQ1RZUEUpOwogICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2ZvcmNlUXVpcmtzID0gdHJ1
ZTsKICAgICB9Ci0KIH07CiAKIC8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBldmVudHVhbGx5
IGJlIG5hbWVkIEhUTUxUb2tlbiBvbmNlIHdlIG1vdmUgdGhlCiAvLyBleGl0aW5nIEhUTUxUb2tl
biB0byBiZSBpbnRlcm5hbCB0byB0aGUgSFRNTFRva2VuaXplci4KLWNsYXNzIEF0b21pY0hUTUxU
b2tlbiB7CitjbGFzcyBBdG9taWNIVE1MVG9rZW4gOiBwdWJsaWMgQXRvbWljTWFya3VwVG9rZW5C
YXNlPEhUTUxUb2tlbj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF0b21pY0hUTUxUb2tl
bik7CiBwdWJsaWM6Ci0gICAgQXRvbWljSFRNTFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCi0gICAg
ICAgIDogbV90eXBlKHRva2VuLnR5cGUoKSkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAobV90eXBl
KSB7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQ6Ci0gICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEhUTUxUb2tlblR5cGVzOjpET0NUWVBFOgotICAgICAgICAgICAgbV9uYW1lID0gQXRvbWlj
U3RyaW5nKHRva2VuLm5hbWUoKS5kYXRhKCksIHRva2VuLm5hbWUoKS5zaXplKCkpOwotICAgICAg
ICAgICAgbV9kb2N0eXBlRGF0YSA9IHRva2VuLm1fZG9jdHlwZURhdGEucmVsZWFzZSgpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZToK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpTdGFydFRh
ZzoKLSAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOiB7Ci0gICAgICAgICAgICBt
X3NlbGZDbG9zaW5nID0gdG9rZW4uc2VsZkNsb3NpbmcoKTsKLSAgICAgICAgICAgIG1fbmFtZSA9
IEF0b21pY1N0cmluZyh0b2tlbi5uYW1lKCkuZGF0YSgpLCB0b2tlbi5uYW1lKCkuc2l6ZSgpKTsK
LSAgICAgICAgICAgIGluaXRpYWxpemVBdHRyaWJ1dGVzKHRva2VuLmF0dHJpYnV0ZXMoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVz
OjpDb21tZW50OgotICAgICAgICAgICAgbV9kYXRhID0gU3RyaW5nKHRva2VuLmNvbW1lbnQoKS5k
YXRhKCksIHRva2VuLmNvbW1lbnQoKS5zaXplKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcjoKLSAgICAgICAgICAgIG1fZXh0ZXJu
YWxDaGFyYWN0ZXJzID0gJnRva2VuLmNoYXJhY3RlcnMoKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Cisg
ICAgQXRvbWljSFRNTFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pIDogQXRvbWljTWFya3VwVG9rZW5C
YXNlPEhUTUxUb2tlbj4oJnRva2VuKSB7IH0KIAogICAgIEF0b21pY0hUTUxUb2tlbihIVE1MVG9r
ZW5UeXBlczo6VHlwZSB0eXBlLCBBdG9taWNTdHJpbmcgbmFtZSwgUGFzc1JlZlB0cjxOYW1lZE5v
ZGVNYXA+IGF0dHJpYnV0ZXMgPSAwKQotICAgICAgICA6IG1fdHlwZSh0eXBlKQotICAgICAgICAs
IG1fbmFtZShuYW1lKQotICAgICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKHVzZXNOYW1lKCkpOwotICAgIH0KLQotICAgIEhUTUxUb2tlblR5cGVz
OjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLQotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQodXNlc05hbWUoKSk7
Ci0gICAgICAgIHJldHVybiBtX25hbWU7Ci0gICAgfQotCi0gICAgdm9pZCBzZXROYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh1c2VzTmFtZSgpKTsK
LSAgICAgICAgbV9uYW1lID0gbmFtZTsKLSAgICB9Ci0KLSAgICBib29sIHNlbGZDbG9zaW5nKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0
YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKLSAgICAgICAgcmV0
dXJuIG1fc2VsZkNsb3Npbmc7Ci0gICAgfQotCi0gICAgQXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJ
dGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAgICBB
U1NFUlQodXNlc0F0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIGlmICghbV9hdHRyaWJ1dGVzKQotICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXMtPmdldEF0dHJp
YnV0ZUl0ZW0oYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCi0gICAgTmFtZWROb2RlTWFwKiBhdHRy
aWJ1dGVzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh1c2VzQXR0cmlidXRlcygpKTsK
LSAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcy5nZXQoKTsKLSAgICB9Ci0KLSAgICBQYXNzUmVm
UHRyPE5hbWVkTm9kZU1hcD4gdGFrZUF0cmlidXRlcygpCi0gICAgewotICAgICAgICBBU1NFUlQo
dXNlc0F0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXMucmVsZWFzZSgp
OwotICAgIH0KLQotICAgIGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlY3RvciYgY2hhcmFjdGVycygp
IGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpD
aGFyYWN0ZXIpOwotICAgICAgICByZXR1cm4gKm1fZXh0ZXJuYWxDaGFyYWN0ZXJzOwotICAgIH0K
LQotICAgIGNvbnN0IFN0cmluZyYgY29tbWVudCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NF
UlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50KTsKLSAgICAgICAgcmV0dXJuIG1f
ZGF0YTsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1pc3Np
bmcgcHVibGljIGlkZW50aWZlciBhbmQgYW4gZW1wdHkgb25lLgotICAgIFdURjo6VmVjdG9yPFVD
aGFyPiYgcHVibGljSWRlbnRpZmllcigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90
eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKLSAgICAgICAgcmV0dXJuIG1fZG9jdHlw
ZURhdGEtPm1fcHVibGljSWRlbnRpZmllcjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogRGlzdGlu
Z3Vpc2ggYmV0d2VlbiBhIG1pc3Npbmcgc3lzdGVtIGlkZW50aWZlciBhbmQgYW4gZW1wdHkgb25l
LgotICAgIFdURjo6VmVjdG9yPFVDaGFyPiYgc3lzdGVtSWRlbnRpZmllcigpIGNvbnN0Ci0gICAg
ewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKLSAg
ICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllcjsKLSAgICB9Cisg
ICAgICAgIDogQXRvbWljTWFya3VwVG9rZW5CYXNlPEhUTUxUb2tlbj4odHlwZSwgbmFtZSwgYXR0
cmlidXRlcykKKyAgICB7IH0KIAogICAgIGJvb2wgZm9yY2VRdWlya3MoKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CiAgICAg
ICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX2ZvcmNlUXVpcmtzOwogICAgIH0KLQotcHJpdmF0
ZToKLSAgICBIVE1MVG9rZW5UeXBlczo6VHlwZSBtX3R5cGU7Ci0KLSAgICB2b2lkIGluaXRpYWxp
emVBdHRyaWJ1dGVzKGNvbnN0IEhUTUxUb2tlbjo6QXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcyk7
Ci0gICAgCi0gICAgYm9vbCB1c2VzTmFtZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2Vu
VHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEU7Ci0gICAg
fQotCi0gICAgYm9vbCB1c2VzQXR0cmlidXRlcygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OkVuZFRhZzsKLSAgICB9Ci0KLSAgICAvLyAibmFtZSIgZm9yIERPQ1RZUEUsIFN0
YXJ0VGFnLCBhbmQgRW5kVGFnCi0gICAgQXRvbWljU3RyaW5nIG1fbmFtZTsKLQotICAgIC8vICJk
YXRhIiBmb3IgQ29tbWVudAotICAgIFN0cmluZyBtX2RhdGE7Ci0KLSAgICAvLyAiY2hhcmFjdGVy
cyIgZm9yIENoYXJhY3RlcgotICAgIC8vCi0gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjb3B5IHRo
ZSB0aGUgY2hhcmFjdGVycyBvdXQgb2YgdGhlIEhUTUxUb2tlbiwgc28gd2UKLSAgICAvLyBrZWVw
IGEgcG9pbnRlciB0byBpdHMgYnVmZmVyIGluc3RlYWQuICBUaGlzIGJ1ZmZlciBpcyBvd25lZCBi
eSB0aGUKLSAgICAvLyBIVE1MVG9rZW4gYW5kIGNhdXNlcyBhIGxpZmV0aW1lIGRlcGVuZGVuY2Ug
YmV0d2VlbiB0aGVzZSBvYmplY3RzLgotICAgIC8vCi0gICAgLy8gRklYTUU6IEFkZCBhIG1lY2hh
bmlzbSBmb3IgImludGVybmFsaXppbmciIHRoZSBjaGFyYWN0ZXJzIHdoZW4gdGhlCi0gICAgLy8g
ICAgICAgIEhUTUxUb2tlbiBpcyBkZXN0cnVjdGVkLgotICAgIGNvbnN0IEhUTUxUb2tlbjo6RGF0
YVZlY3RvciogbV9leHRlcm5hbENoYXJhY3RlcnM7Ci0KLSAgICAvLyBGb3IgRE9DVFlQRQotICAg
IE93blB0cjxIVE1MVG9rZW5UeXBlczo6RG9jdHlwZURhdGE+IG1fZG9jdHlwZURhdGE7Ci0KLSAg
ICAvLyBGb3IgU3RhcnRUYWcgYW5kIEVuZFRhZwotICAgIGJvb2wgbV9zZWxmQ2xvc2luZzsKLQot
ICAgIFJlZlB0cjxOYW1lZE5vZGVNYXA+IG1fYXR0cmlidXRlczsKIH07CiAKLWlubGluZSB2b2lk
IEF0b21pY0hUTUxUb2tlbjo6aW5pdGlhbGl6ZUF0dHJpYnV0ZXMoY29uc3QgSFRNTFRva2VuOjpB
dHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKQotewotICAgIHNpemVfdCBzaXplID0gYXR0cmlidXRl
cy5zaXplKCk7Ci0gICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2F0dHJp
YnV0ZXMgPSBOYW1lZE5vZGVNYXA6OmNyZWF0ZSgpOwotICAgIG1fYXR0cmlidXRlcy0+cmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewotICAgICAgICBjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYgYXR0cmlidXRlID0g
YXR0cmlidXRlc1tpXTsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZS5tX25hbWUuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBh
YmxlIHRvIGFkZCB0aGUgZm9sbG93aW5nIEFTU0VSVCBvbmNlIHdlIGZpeAotICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI5NzEKLSAgICAgICAgLy8g
ICBBU1NFUlQoYXR0cmlidXRlLm1fbmFtZVJhbmdlLm1fc3RhcnQpOwotICAgICAgICBBU1NFUlQo
YXR0cmlidXRlLm1fbmFtZVJhbmdlLm1fZW5kKTsKLSAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZS5t
X3ZhbHVlUmFuZ2UubV9zdGFydCk7Ci0gICAgICAgIEFTU0VSVChhdHRyaWJ1dGUubV92YWx1ZVJh
bmdlLm1fZW5kKTsKLQotICAgICAgICBTdHJpbmcgbmFtZShhdHRyaWJ1dGUubV9uYW1lLmRhdGEo
KSwgYXR0cmlidXRlLm1fbmFtZS5zaXplKCkpOwotICAgICAgICBTdHJpbmcgdmFsdWUoYXR0cmli
dXRlLm1fdmFsdWUuZGF0YSgpLCBhdHRyaWJ1dGUubV92YWx1ZS5zaXplKCkpOwotICAgICAgICBt
X2F0dHJpYnV0ZXMtPmluc2VydEF0dHJpYnV0ZShBdHRyaWJ1dGU6OmNyZWF0ZU1hcHBlZChuYW1l
LCB2YWx1ZSksIGZhbHNlKTsKLSAgICB9Ci19Ci0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwCmluZGV4IGRmZDc2YzYzZjI4NWE4Yjk3
ZTBmNmMxYjgwZjU2NGIwYjk3MDYxMDIuLmIzOTc3NjhmODYzMTc5NTYxOTI2ZWE5MTlmMzJjMTY2
NTBmYzAxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tl
bml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIu
Y3BwCkBAIC00Nyw2ICs0NywyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKKy8vIFRoaXMgaGFzIHRvIGdvIGluIGEgLmNwcCBmaWxlLCBhcyB0
aGUgbGlua2VyIGRvZXNuJ3QgbGlrZSBpdCBiZWluZyBpbmNsdWRlZCBtb3JlIHRoYW4gb25jZS4K
Ky8vIFdlIGRvbid0IGhhdmUgYW4gSFRNTFRva2VuLmNwcCB0aG91Z2gsIHNvIHRoaXMgaXMgdGhl
IG5leHQgYmVzdCBwbGFjZS4KK3RlbXBsYXRlPD4KK1F1YWxpZmllZE5hbWUgQXRvbWljTWFya3Vw
VG9rZW5CYXNlPEhUTUxUb2tlbj46Om5hbWVGb3JBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlQmFz
ZSYgYXR0cmlidXRlKSBjb25zdAoreworICAgIHJldHVybiBRdWFsaWZpZWROYW1lKG51bGxBdG9t
LCBBdG9taWNTdHJpbmcoYXR0cmlidXRlLm1fbmFtZS5kYXRhKCksIGF0dHJpYnV0ZS5tX25hbWUu
c2l6ZSgpKSwgbnVsbEF0b20pOworfQorCit0ZW1wbGF0ZTw+Citib29sIEF0b21pY01hcmt1cFRv
a2VuQmFzZTxIVE1MVG9rZW4+Ojp1c2VzTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHlw
ZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVz
OjpFbmRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFOworfQorCit0ZW1w
bGF0ZTw+Citib29sIEF0b21pY01hcmt1cFRva2VuQmFzZTxIVE1MVG9rZW4+Ojp1c2VzQXR0cmli
dXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3Rh
cnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWc7Cit9CisKIG5hbWVzcGFj
ZSB7CiAKIGlubGluZSBVQ2hhciB0b0xvd2VyQ2FzZShVQ2hhciBjYykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oCmluZGV4IGIzOTA4OTYyYTNlZjFmZDc4NjU4
ZDNjOWVkMjE3NzdkYjQzZGJlMmIuLjYxYWIwZDk0Y2QzNzhjZmMyY2VhZTZiODQwOTkzOTYxMDk1
MDc0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5C
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaApA
QCAtNjYsMTMgKzY2LDE0IEBAIHB1YmxpYzoKICAgICBXVEY6OlZlY3RvcjxVQ2hhciwgMzI+IG1f
dmFsdWU7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlU2V0LCB0eXBlbmFtZSBEb2N0eXBl
RGF0YSA9IERvY3R5cGVEYXRhQmFzZSwgdHlwZW5hbWUgQXR0cmlidXRlVHlwZSA9IEF0dHJpYnV0
ZUJhc2U+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlU2V0LCB0eXBlbmFtZSBEb2N0eXBlRGF0YVR5
cGUgPSBEb2N0eXBlRGF0YUJhc2UsIHR5cGVuYW1lIEF0dHJpYnV0ZVR5cGUgPSBBdHRyaWJ1dGVC
YXNlPgogY2xhc3MgTWFya3VwVG9rZW5CYXNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShN
YXJrdXBUb2tlbkJhc2UpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHR5cGVkZWYgVHlwZVNldCBUeXBlOwogICAgIHR5cGVkZWYgQXR0cmlidXRlVHlwZSBBdHRy
aWJ1dGU7CisgICAgdHlwZWRlZiBEb2N0eXBlRGF0YVR5cGUgRG9jdHlwZURhdGE7CiAKICAgICB0
eXBlZGVmIFdURjo6VmVjdG9yPEF0dHJpYnV0ZSwgMTA+IEF0dHJpYnV0ZUxpc3Q7CiAgICAgdHlw
ZWRlZiBXVEY6OlZlY3RvcjxVQ2hhciwgMTAyND4gRGF0YVZlY3RvcjsKQEAgLTM1MCwxMCArMzUx
LDExIEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG1fZGF0YTsKICAgICB9CiAKLSAgICAv
LyBGSVhNRTogSSdtIG5vdCBzdXJlIHdoYXQgdGhlIGZpbmFsIHJlbGF0aW9uc2hpcCBiZXR3ZWVu
IEhUTUxUb2tlbiBhbmQKLSAgICAvLyBBdG9taWNIVE1MVG9rZW4gd2lsbCBiZS4gSSdtIG1hcmtp
bmcgdGhpcyBhIGZyaWVuZCBmb3Igbm93LCBidXQgd2UnbGwKKyAgICAvLyBGSVhNRTogSSdtIG5v
dCBzdXJlIHdoYXQgdGhlIGZpbmFsIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIE1hcmt1cFRva2VuQmFz
ZSBhbmQKKyAgICAvLyBBdG9taWNNYXJrdXBUb2tlbkJhc2Ugd2lsbCBiZS4gSSdtIG1hcmtpbmcg
dGhpcyBhIGZyaWVuZCBmb3Igbm93LCBidXQgd2UnbGwKICAgICAvLyB3YW50IHRvIGVuZCB1cCB3
aXRoIGEgY2xlYW5lciBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgdHdvIGNsYXNzZXMuCi0gICAgZnJp
ZW5kIGNsYXNzIEF0b21pY0hUTUxUb2tlbjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUb2tlbj4K
KyAgICBmcmllbmQgY2xhc3MgQXRvbWljTWFya3VwVG9rZW5CYXNlOwogCiAgICAgdHlwZW5hbWUg
VHlwZTo6VHlwZSBtX3R5cGU7CiAgICAgdHlwZW5hbWUgQXR0cmlidXRlOjpSYW5nZSBtX3Jhbmdl
OyAvLyBBbHdheXMgc3RhcnRzIGF0IHplcm8uCkBAIC0zNzEsNiArMzczLDE4MCBAQCBwcm90ZWN0
ZWQ6CiAgICAgQXR0cmlidXRlKiBtX2N1cnJlbnRBdHRyaWJ1dGU7CiB9OwogCisvLyBGSVhNRTog
VGhpcyBjbGFzcyBzaG91bGQgZXZlbnR1YWxseSBiZSBuYW1lZCBIVE1MVG9rZW4gb25jZSB3ZSBt
b3ZlIHRoZQorLy8gZXhpdGluZyBIVE1MVG9rZW4gdG8gYmUgaW50ZXJuYWwgdG8gdGhlIEhUTUxU
b2tlbml6ZXIuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUb2tlbj4KK2NsYXNzIEF0b21pY01hcmt1cFRv
a2VuQmFzZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXRvbWljTWFya3VwVG9rZW5CYXNl
KTsKK3B1YmxpYzoKKyAgICBBdG9taWNNYXJrdXBUb2tlbkJhc2UoVG9rZW4qIHRva2VuKQorICAg
ICAgICA6IG1fdHlwZSh0b2tlbi0+dHlwZSgpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRva2Vu
KTsKKworICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgICAgICBjYXNlIFRva2VuOjpUeXBl
OjpVbmluaXRpYWxpemVkOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6RE9DVFlQRToKKyAgICAg
ICAgICAgIG1fbmFtZSA9IEF0b21pY1N0cmluZyh0b2tlbi0+bmFtZSgpLmRhdGEoKSwgdG9rZW4t
Pm5hbWUoKS5zaXplKCkpOworICAgICAgICAgICAgbV9kb2N0eXBlRGF0YSA9IHRva2VuLT5tX2Rv
Y3R5cGVEYXRhLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRv
a2VuOjpUeXBlOjpFbmRPZkZpbGU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBU
b2tlbjo6VHlwZTo6U3RhcnRUYWc6CisgICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkVuZFRhZzog
eworICAgICAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRva2VuLT5zZWxmQ2xvc2luZygpOworICAg
ICAgICAgICAgbV9uYW1lID0gQXRvbWljU3RyaW5nKHRva2VuLT5uYW1lKCkuZGF0YSgpLCB0b2tl
bi0+bmFtZSgpLnNpemUoKSk7CisgICAgICAgICAgICBpbml0aWFsaXplQXR0cmlidXRlcyh0b2tl
bi0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGNhc2UgVG9rZW46OlR5cGU6OkNvbW1lbnQ6CisgICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmco
dG9rZW4tPmNvbW1lbnQoKS5kYXRhKCksIHRva2VuLT5jb21tZW50KCkuc2l6ZSgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpDaGFyYWN0ZXI6CisgICAg
ICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVycyA9ICZ0b2tlbi0+Y2hhcmFjdGVycygpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIEF0b21pY01hcmt1cFRva2VuQmFzZSh0eXBlbmFtZSBUb2tl
bjo6VHlwZTo6VHlwZSB0eXBlLCBBdG9taWNTdHJpbmcgbmFtZSwgUGFzc1JlZlB0cjxOYW1lZE5v
ZGVNYXA+IGF0dHJpYnV0ZXMgPSAwKQorICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAs
IG1fbmFtZShuYW1lKQorICAgICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHVzZXNOYW1lKCkpOworICAgIH0KKworICAgIHR5cGVuYW1lIFRva2Vu
OjpUeXBlOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQodXNlc05h
bWUoKSk7CisgICAgICAgIHJldHVybiBtX25hbWU7CisgICAgfQorCisgICAgdm9pZCBzZXROYW1l
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh1c2VzTmFt
ZSgpKTsKKyAgICAgICAgbV9uYW1lID0gbmFtZTsKKyAgICB9CisKKyAgICBib29sIHNlbGZDbG9z
aW5nKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVG9rZW46OlR5cGU6
OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBUb2tlbjo6VHlwZTo6RW5kVGFnKTsKKyAgICAgICAgcmV0
dXJuIG1fc2VsZkNsb3Npbmc7CisgICAgfQorCisgICAgQXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJ
dGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICBB
U1NFUlQodXNlc0F0dHJpYnV0ZXMoKSk7CisgICAgICAgIGlmICghbV9hdHRyaWJ1dGVzKQorICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXMtPmdldEF0dHJp
YnV0ZUl0ZW0oYXR0cmlidXRlTmFtZSk7CisgICAgfQorCisgICAgTmFtZWROb2RlTWFwKiBhdHRy
aWJ1dGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCh1c2VzQXR0cmlidXRlcygpKTsK
KyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcy5nZXQoKTsKKyAgICB9CisKKyAgICBQYXNzUmVm
UHRyPE5hbWVkTm9kZU1hcD4gdGFrZUF0cmlidXRlcygpCisgICAgeworICAgICAgICBBU1NFUlQo
dXNlc0F0dHJpYnV0ZXMoKSk7CisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXMucmVsZWFzZSgp
OworICAgIH0KKworICAgIGNvbnN0IHR5cGVuYW1lIFRva2VuOjpEYXRhVmVjdG9yJiBjaGFyYWN0
ZXJzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVG9rZW46OlR5cGU6
OkNoYXJhY3Rlcik7CisgICAgICAgIHJldHVybiAqbV9leHRlcm5hbENoYXJhY3RlcnM7CisgICAg
fQorCisgICAgY29uc3QgU3RyaW5nJiBjb21tZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gVG9rZW46OlR5cGU6OkNvbW1lbnQpOworICAgICAgICByZXR1cm4gbV9k
YXRhOworICAgIH0KKworICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2lu
ZyBwdWJsaWMgaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCisgICAgV1RGOjpWZWN0b3I8VUNo
YXI+JiBwdWJsaWNJZGVudGlmaWVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gVG9rZW46OlR5cGU6OkRPQ1RZUEUpOworICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0
YS0+bV9wdWJsaWNJZGVudGlmaWVyOworICAgIH0KKworICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlz
aCBiZXR3ZWVuIGEgbWlzc2luZyBzeXN0ZW0gaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCisg
ICAgV1RGOjpWZWN0b3I8VUNoYXI+JiBzeXN0ZW1JZGVudGlmaWVyKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVG9rZW46OlR5cGU6OkRPQ1RZUEUpOworICAgICAgICBy
ZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyOworICAgIH0KKworcHJvdGVj
dGVkOgorICAgIHR5cGVuYW1lIFRva2VuOjpUeXBlOjpUeXBlIG1fdHlwZTsKKworICAgIHZvaWQg
aW5pdGlhbGl6ZUF0dHJpYnV0ZXMoY29uc3QgdHlwZW5hbWUgVG9rZW46OkF0dHJpYnV0ZUxpc3Qm
IGF0dHJpYnV0ZXMpOworICAgIFF1YWxpZmllZE5hbWUgbmFtZUZvckF0dHJpYnV0ZShjb25zdCB0
eXBlbmFtZSBUb2tlbjo6QXR0cmlidXRlJikgY29uc3Q7CisKKyAgICBib29sIHVzZXNOYW1lKCkg
Y29uc3Q7CisKKyAgICBib29sIHVzZXNBdHRyaWJ1dGVzKCkgY29uc3Q7CisKKyAgICAvLyAibmFt
ZSIgZm9yIERPQ1RZUEUsIFN0YXJ0VGFnLCBhbmQgRW5kVGFnCisgICAgQXRvbWljU3RyaW5nIG1f
bmFtZTsKKworICAgIC8vICJkYXRhIiBmb3IgQ29tbWVudAorICAgIFN0cmluZyBtX2RhdGE7CisK
KyAgICAvLyAiY2hhcmFjdGVycyIgZm9yIENoYXJhY3RlcgorICAgIC8vCisgICAgLy8gV2UgZG9u
J3Qgd2FudCB0byBjb3B5IHRoZSB0aGUgY2hhcmFjdGVycyBvdXQgb2YgdGhlIFRva2VuLCBzbyB3
ZQorICAgIC8vIGtlZXAgYSBwb2ludGVyIHRvIGl0cyBidWZmZXIgaW5zdGVhZC4gVGhpcyBidWZm
ZXIgaXMgb3duZWQgYnkgdGhlCisgICAgLy8gVG9rZW4gYW5kIGNhdXNlcyBhIGxpZmV0aW1lIGRl
cGVuZGVuY2UgYmV0d2VlbiB0aGVzZSBvYmplY3RzLgorICAgIC8vCisgICAgLy8gRklYTUU6IEFk
ZCBhIG1lY2hhbmlzbSBmb3IgImludGVybmFsaXppbmciIHRoZSBjaGFyYWN0ZXJzIHdoZW4gdGhl
CisgICAgLy8gICAgICAgIEhUTUxUb2tlbiBpcyBkZXN0cnVjdGVkLgorICAgIGNvbnN0IHR5cGVu
YW1lIFRva2VuOjpEYXRhVmVjdG9yKiBtX2V4dGVybmFsQ2hhcmFjdGVyczsKKworICAgIC8vIEZv
ciBET0NUWVBFCisgICAgT3duUHRyPHR5cGVuYW1lIFRva2VuOjpEb2N0eXBlRGF0YT4gbV9kb2N0
eXBlRGF0YTsKKworICAgIC8vIEZvciBTdGFydFRhZyBhbmQgRW5kVGFnCisgICAgYm9vbCBtX3Nl
bGZDbG9zaW5nOworCisgICAgUmVmUHRyPE5hbWVkTm9kZU1hcD4gbV9hdHRyaWJ1dGVzOworfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVG9rZW4+CitpbmxpbmUgdm9pZCBBdG9taWNNYXJrdXBUb2tl
bkJhc2U8VG9rZW4+Ojppbml0aWFsaXplQXR0cmlidXRlcyhjb25zdCB0eXBlbmFtZSBUb2tlbjo6
QXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcykKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IGF0dHJpYnV0
ZXMuc2l6ZSgpOworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hdHRy
aWJ1dGVzID0gTmFtZWROb2RlTWFwOjpjcmVhdGUoKTsKKyAgICBtX2F0dHJpYnV0ZXMtPnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKKyAgICAgICAgY29uc3QgdHlwZW5hbWUgVG9rZW46OkF0dHJpYnV0ZSYgYXR0cmli
dXRlID0gYXR0cmlidXRlc1tpXTsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZS5tX25hbWUuaXNFbXB0
eSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBiZSBhYmxlIHRvIGFkZCB0aGUgZm9sbG93aW5nIEFTU0VSVCBvbmNlIHdlIGZpeAorICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI5NzEKKyAgICAg
ICAgLy8gICBBU1NFUlQoYXR0cmlidXRlLm1fbmFtZVJhbmdlLm1fc3RhcnQpOworICAgICAgICBB
U1NFUlQoYXR0cmlidXRlLm1fbmFtZVJhbmdlLm1fZW5kKTsKKyAgICAgICAgQVNTRVJUKGF0dHJp
YnV0ZS5tX3ZhbHVlUmFuZ2UubV9zdGFydCk7CisgICAgICAgIEFTU0VSVChhdHRyaWJ1dGUubV92
YWx1ZVJhbmdlLm1fZW5kKTsKKworICAgICAgICBTdHJpbmcgdmFsdWUoYXR0cmlidXRlLm1fdmFs
dWUuZGF0YSgpLCBhdHRyaWJ1dGUubV92YWx1ZS5zaXplKCkpOworICAgICAgICBtX2F0dHJpYnV0
ZXMtPmluc2VydEF0dHJpYnV0ZShBdHRyaWJ1dGU6OmNyZWF0ZU1hcHBlZChuYW1lRm9yQXR0cmli
dXRlKGF0dHJpYnV0ZSksIHZhbHVlKSwgZmFsc2UpOworICAgIH0KK30KKwogfQogCiAjZW5kaWYg
Ly8gTWFya3VwVG9rZW5CYXNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW4uaAppbmRl
eCA0YzEyZTIxOGMwZGJlMTBkYTZhYTJkMjRmNGExYzRjNDAzOWY3NTA4Li5iZjRjNTYxYjM5MDBk
OTlkYjI1MTA5NTJiYWM1MDQyN2VmYmI2MGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxU
b2tlbi5oCkBAIC0xMzcsNyArMTM3LDcgQEAgcHVibGljOgogICAgICAgICBtX3R5cGUgPSBYTUxU
b2tlblR5cGVzOjpYTUxEZWNsYXJhdGlvbjsKICAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEg
PSBhZG9wdFB0cihuZXcgWE1MRGVjbGFyYXRpb25EYXRhKCkpOwogICAgIH0KLSAgICAKKwogICAg
IHZvaWQgYXBwZW5kVG9YTUxWZXJzaW9uKFVDaGFyIGNoYXJhY3RlcikKICAgICB7CiAgICAgICAg
IEFTU0VSVChjaGFyYWN0ZXIpOwpAQCAtMzg4LDggKzM4OCw5IEBAIHB1YmxpYzoKICNlbmRpZiAv
LyBOREVCVUcKIAogcHJpdmF0ZToKLQotICAgIHR5cGVkZWYgRG9jdHlwZURhdGFCYXNlIERvY3R5
cGVEYXRhOworICAgIC8vIEF0b21pY1hNTFRva2VuIG5lZWRzIHRvIHN0ZWFsIHNvbWUgb2Ygb3Vy
IHBvaW50ZXJzIGZyb20gdXMKKyAgICAvLyBGSVhNRTogYWRkIHRha2UqIGZ1bmN0aW9ucworICAg
IGZyaWVuZCBjbGFzcyBBdG9taWNYTUxUb2tlbjsKIAogICAgIC8vICJ0YXJnZXQiIGZvciBQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24sICJwcmVmaXgiIGZvciBTdGFydFRhZyBhbmQgRW5kVGFnCiAgICAg
RGF0YVZlY3RvciBtX3RhcmdldDsKQEAgLTM5OCw2ICszOTksODAgQEAgcHJpdmF0ZToKICAgICBP
d25QdHI8WE1MRGVjbGFyYXRpb25EYXRhPiBtX3htbERlY2xhcmF0aW9uRGF0YTsKIH07CiAKK2Ns
YXNzIEF0b21pY1hNTFRva2VuIDogcHVibGljIEF0b21pY01hcmt1cFRva2VuQmFzZTxYTUxUb2tl
bj4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF0b21pY1hNTFRva2VuKTsKK3B1YmxpYzoK
KyAgICBBdG9taWNYTUxUb2tlbihYTUxUb2tlbiYgdG9rZW4pCisgICAgICAgIDogQXRvbWljTWFy
a3VwVG9rZW5CYXNlPFhNTFRva2VuPigmdG9rZW4pCisgICAgeworICAgICAgICBzd2l0Y2ggKG1f
dHlwZSkgeworICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OlByb2Nlc3NpbmdJbnN0cnVjdGlv
bjoKKyAgICAgICAgICAgIG1fbmFtZSA9IEF0b21pY1N0cmluZyh0b2tlbi50YXJnZXQoKS5kYXRh
KCksIHRva2VuLnRhcmdldCgpLnNpemUoKSk7CisgICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmco
dG9rZW4uZGF0YSgpLmRhdGEoKSwgdG9rZW4uZGF0YSgpLnNpemUoKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpYTUxEZWNsYXJhdGlvbjoKKyAgICAg
ICAgICAgIG1feG1sRGVjbGFyYXRpb25EYXRhID0gdG9rZW4ubV94bWxEZWNsYXJhdGlvbkRhdGEu
cmVsZWFzZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBl
czo6U3RhcnRUYWc6CisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6RW5kVGFnOiB7CisgICAg
ICAgICAgICBpZiAodG9rZW4ucHJlZml4KCkuc2l6ZSgpKQorICAgICAgICAgICAgICAgIG1fcHJl
Zml4ID0gQXRvbWljU3RyaW5nKHRva2VuLnByZWZpeCgpLmRhdGEoKSwgdG9rZW4ucHJlZml4KCku
c2l6ZSgpKTsKKyAgICAgICAgICAgIGluaXRpYWxpemVBdHRyaWJ1dGVzKHRva2VuLmF0dHJpYnV0
ZXMoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFhNTFRv
a2VuVHlwZXM6OkNEQVRBOgorICAgICAgICAgICAgbV9kYXRhID0gU3RyaW5nKHRva2VuLmRhdGEo
KS5kYXRhKCksIHRva2VuLmRhdGEoKS5zaXplKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6RW50aXR5OgorICAgICAgICAgICAgbV9uYW1lID0gQXRv
bWljU3RyaW5nKHRva2VuLm5hbWUoKS5kYXRhKCksIHRva2VuLm5hbWUoKS5zaXplKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIEF0b21pY1hNTFRva2VuKFhNTFRva2VuVHlwZXM6OlR5cGUg
dHlwZSwgQXRvbWljU3RyaW5nIG5hbWUsIFBhc3NSZWZQdHI8TmFtZWROb2RlTWFwPiBhdHRyaWJ1
dGVzID0gMCkKKyAgICAgICAgOiBBdG9taWNNYXJrdXBUb2tlbkJhc2U8WE1MVG9rZW4+KHR5cGUs
IG5hbWUsIGF0dHJpYnV0ZXMpCisgICAgeyB9CisKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHBy
ZWZpeCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlw
ZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgICAg
ICByZXR1cm4gbV9wcmVmaXg7CisgICAgfQorCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0YXJn
ZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVz
OjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOworICAgICAgICByZXR1cm4gbV9uYW1lOworICAgIH0K
KworICAgIGNvbnN0IFN0cmluZyYgZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
bV90eXBlID09IFhNTFRva2VuVHlwZXM6OkNEQVRBIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVz
OjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0K
KworICAgIFdURjo6VmVjdG9yPFVDaGFyPiYgeG1sVmVyc2lvbigpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlhNTERlY2xhcmF0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX3ZlcnNpb247CisgICAgfQorCisg
ICAgYm9vbCB4bWxTdGFuZGFsb25lKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gWE1MVG9rZW5UeXBlczo6WE1MRGVjbGFyYXRpb24pOworICAgICAgICByZXR1cm4gbV94
bWxEZWNsYXJhdGlvbkRhdGEtPm1faGFzU3RhbmRhbG9uZSAmJiBtX3htbERlY2xhcmF0aW9uRGF0
YS0+bV9zdGFuZGFsb25lOworICAgIH0KKworcHJpdmF0ZToKKyAgICAvLyAicHJlZml4IiBmb3Ig
U3RhcnRUYWcsIEVuZFRhZworICAgIEF0b21pY1N0cmluZyBtX3ByZWZpeDsKKworICAgIC8vIEZv
ciBYTUwgZGVjbGFyYXRpb24KKyAgICBPd25QdHI8WE1MVG9rZW46OlhNTERlY2xhcmF0aW9uRGF0
YT4gbV94bWxEZWNsYXJhdGlvbkRhdGE7Cit9OworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuY3BwCmluZGV4IDk3OTgwNjI0YzZjODRiZDJjYjg5
Yzk1YTM2YjRhZTcyZTExZTRjNWEuLjU0ZWY5OGJjZGEwMzVhOTgxZjljYjYxNzFiOGZhMmIwMzQ2
ZThhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW5pemVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHAKQEAg
LTQyLDYgKzQyLDI2IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorLy8gVGhpcyBoYXMgdG8gZ28gaW4gYSAuY3BwIGZpbGUsIGFzIHRoZSBsaW5rZXIgZG9l
c24ndCBsaWtlIGl0IGJlaW5nIGluY2x1ZGVkIG1vcmUgdGhhbiBvbmNlLgorLy8gV2UgZG9uJ3Qg
aGF2ZSBhbiBYTUxUb2tlbi5jcHAgdGhvdWdoLCBzbyB0aGlzIGlzIHRoZSBuZXh0IGJlc3QgcGxh
Y2UuCit0ZW1wbGF0ZTw+CitRdWFsaWZpZWROYW1lIEF0b21pY01hcmt1cFRva2VuQmFzZTxYTUxU
b2tlbj46Om5hbWVGb3JBdHRyaWJ1dGUoY29uc3QgWE1MVG9rZW46OkF0dHJpYnV0ZSYgYXR0cmli
dXRlKSBjb25zdAoreworICAgIHJldHVybiBRdWFsaWZpZWROYW1lKGF0dHJpYnV0ZS5tX3ByZWZp
eC5pc0VtcHR5KCkgPyBudWxsQXRvbSA6IEF0b21pY1N0cmluZyhhdHRyaWJ1dGUubV9wcmVmaXgu
ZGF0YSgpLCBhdHRyaWJ1dGUubV9wcmVmaXguc2l6ZSgpKSwgQXRvbWljU3RyaW5nKGF0dHJpYnV0
ZS5tX25hbWUuZGF0YSgpLCBhdHRyaWJ1dGUubV9uYW1lLnNpemUoKSksIG51bGxBdG9tKTsKK30K
KwordGVtcGxhdGU8PgorYm9vbCBBdG9taWNNYXJrdXBUb2tlbkJhc2U8WE1MVG9rZW4+Ojp1c2Vz
TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpTdGFy
dFRhZyB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6RW5kVGFnIHx8IG1fdHlwZSA9PSBYTUxU
b2tlblR5cGVzOjpET0NUWVBFIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpFbnRpdHk7Cit9
CisKK3RlbXBsYXRlPD4KK2Jvb2wgQXRvbWljTWFya3VwVG9rZW5CYXNlPFhNTFRva2VuPjo6dXNl
c0F0dHJpYnV0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGUgPT0gWE1MVG9rZW5UeXBl
czo6U3RhcnRUYWcgfHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6OkVuZFRhZzsKK30KKwogbmFt
ZXNwYWNlIHsKIAogaW5saW5lIGJvb2wgaXNWYWxpZE5hbWVTdGFydChVQ2hhciBjYykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102836</attachid>
            <date>2011-08-03 15:20:24 -0700</date>
            <delta_ts>2011-08-03 16:18:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-65639-20110803152025.patch</filename>
            <type>text/plain</type>
            <size>21304</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIyNDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNzk3YjIzOWM3OTdlM2Ux
OTM4N2I1NWIwMzJjNmZjNjRjZDBmNTkzLi5mZTJiZTBkOTNiNTMwMDkwYTBlMDFmOWQ3NDMxYmZm
Nzk2YjExZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDgtMDMgIEplZmZy
ZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGF0b21pYyBYTUwgdG9r
ZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBDcmVhdGUgYSBz
aGFyZWQgQXRvbWljTWFya3VwVG9rZW5CYXNlIHRoYXQgaXMgc2hhcmVkIGJ5IEF0b21pY0hUTUxU
b2tlbiBhbmQgdGhlIG5ldyBBdG9taWNYTUxUb2tlbgorCisgICAgICAgICogaHRtbC9wYXJzZXIv
SFRNTFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OnNldEZvcmNlUXVpcmtz
KToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6QXRvbWljSFRNTFRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6Zm9yY2VRdWlya3MpOgorICAgICAg
ICAqIGh0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Ojpu
YW1lRm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6dXNlc05hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Ojp1c2VzQXR0cmlidXRlcyk6CisgICAgICAgICogeG1sL3BhcnNlci9NYXJr
dXBUb2tlbkJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY01hcmt1cFRva2VuQmFzZTo6
QXRvbWljTWFya3VwVG9rZW5CYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY01hcmt1cFRv
a2VuQmFzZTo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNNYXJrdXBUb2tlbkJhc2U6
Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljTWFya3VwVG9rZW5CYXNlOjpzZXROYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY01hcmt1cFRva2VuQmFzZTo6c2VsZkNsb3Npbmcp
OgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljTWFya3VwVG9rZW5CYXNlOjpnZXRBdHRyaWJ1dGVJ
dGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY01hcmt1cFRva2VuQmFzZTo6YXR0cmlidXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNNYXJrdXBUb2tlbkJhc2U6OnRha2VBdHJpYnV0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljTWFya3VwVG9rZW5CYXNlOjpjaGFyYWN0ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY01hcmt1cFRva2VuQmFzZTo6Y29tbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdG9taWNNYXJrdXBUb2tlbkJhc2U6OnB1YmxpY0lkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljTWFya3VwVG9rZW5CYXNlOjpzeXN0ZW1JZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6aW5pdGlhbGl6ZUF0dHJpYnV0ZXMpOgorICAgICAg
ICAqIHhtbC9wYXJzZXIvWE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY1hNTFRv
a2VuOjpBdG9taWNYTUxUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNYTUxUb2tlbjo6
cHJlZml4KToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY1hNTFRva2VuOjp0YXJnZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6QXRvbWljWE1MVG9rZW46OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
QXRvbWljWE1MVG9rZW46OnhtbFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljWE1M
VG9rZW46OnhtbFN0YW5kYWxvbmUpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MVG9rZW5pemVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6bmFtZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjo6OnVzZXNOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6dXNlc0F0dHJpYnV0ZXMp
OgorCiAyMDExLTA4LTAyICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIG5hbWVzcGFjZSBwcmVmaXggc3VwcG9ydCBpbiBYTUwgdG9rZW5pemVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCmluZGV4IDE0NzlkMGQ1ZTI0Mjc4OTliYTAzOWNk
NTMwMTA5NDUwNDg0YzBmNTguLmEzMzQxNDI3OGFhMTc5YjQ1YzRkZmIwZjc0MmE4Yjk0ZjQyNzI4
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCkBAIC04MCwxMTcgKzgw
LDE2IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6
RE9DVFlQRSk7CiAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1fZm9yY2VRdWlya3MgPSB0cnVlOwog
ICAgIH0KLQogfTsKIAotLy8gRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxkIGV2ZW50dWFsbHkgYmUg
bmFtZWQgSFRNTFRva2VuIG9uY2Ugd2UgbW92ZSB0aGUKLS8vIGV4aXRpbmcgSFRNTFRva2VuIHRv
IGJlIGludGVybmFsIHRvIHRoZSBIVE1MVG9rZW5pemVyLgotY2xhc3MgQXRvbWljSFRNTFRva2Vu
IHsKK2NsYXNzIEF0b21pY0hUTUxUb2tlbiA6IHB1YmxpYyBBdG9taWNNYXJrdXBUb2tlbkJhc2U8
SFRNTFRva2VuPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXRvbWljSFRNTFRva2VuKTsK
IHB1YmxpYzoKLSAgICBBdG9taWNIVE1MVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKLSAgICAgICAg
OiBtX3R5cGUodG9rZW4udHlwZSgpKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsK
LSAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZDoKLSAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
SFRNTFRva2VuVHlwZXM6OkRPQ1RZUEU6Ci0gICAgICAgICAgICBtX25hbWUgPSBBdG9taWNTdHJp
bmcodG9rZW4ubmFtZSgpLmRhdGEoKSwgdG9rZW4ubmFtZSgpLnNpemUoKSk7Ci0gICAgICAgICAg
ICBtX2RvY3R5cGVEYXRhID0gdG9rZW4ubV9kb2N0eXBlRGF0YS5yZWxlYXNlKCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlOgotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnOgot
ICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRUYWc6IHsKLSAgICAgICAgICAgIG1fc2Vs
ZkNsb3NpbmcgPSB0b2tlbi5zZWxmQ2xvc2luZygpOwotICAgICAgICAgICAgbV9uYW1lID0gQXRv
bWljU3RyaW5nKHRva2VuLm5hbWUoKS5kYXRhKCksIHRva2VuLm5hbWUoKS5zaXplKCkpOwotICAg
ICAgICAgICAgaW5pdGlhbGl6ZUF0dHJpYnV0ZXModG9rZW4uYXR0cmlidXRlcygpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNv
bW1lbnQ6Ci0gICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmcodG9rZW4uY29tbWVudCgpLmRhdGEo
KSwgdG9rZW4uY29tbWVudCgpLnNpemUoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOgotICAgICAgICAgICAgbV9leHRlcm5hbENo
YXJhY3RlcnMgPSAmdG9rZW4uY2hhcmFjdGVycygpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICBB
dG9taWNIVE1MVG9rZW4oSFRNTFRva2VuJiB0b2tlbikgOiBBdG9taWNNYXJrdXBUb2tlbkJhc2U8
SFRNTFRva2VuPigmdG9rZW4pIHsgfQogCiAgICAgQXRvbWljSFRNTFRva2VuKEhUTUxUb2tlblR5
cGVzOjpUeXBlIHR5cGUsIEF0b21pY1N0cmluZyBuYW1lLCBQYXNzUmVmUHRyPE5hbWVkTm9kZU1h
cD4gYXR0cmlidXRlcyA9IDApCi0gICAgICAgIDogbV90eXBlKHR5cGUpCi0gICAgICAgICwgbV9u
YW1lKG5hbWUpCi0gICAgICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCi0gICAgewotICAg
ICAgICBBU1NFUlQodXNlc05hbWUoKSk7Ci0gICAgfQotCi0gICAgSFRNTFRva2VuVHlwZXM6OlR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotCi0gICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh1c2VzTmFtZSgpKTsKLSAg
ICAgICAgcmV0dXJuIG1fbmFtZTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldE5hbWUoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHVzZXNOYW1lKCkpOwotICAg
ICAgICBtX25hbWUgPSBuYW1lOwotICAgIH0KLQotICAgIGJvb2wgc2VsZkNsb3NpbmcoKSBjb25z
dAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRU
YWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOwotICAgICAgICByZXR1cm4g
bV9zZWxmQ2xvc2luZzsKLSAgICB9Ci0KLSAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0o
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VCh1c2VzQXR0cmlidXRlcygpKTsKLSAgICAgICAgaWYgKCFtX2F0dHJpYnV0ZXMpCi0gICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcy0+Z2V0QXR0cmlidXRl
SXRlbShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KLSAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0
ZXMoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKHVzZXNBdHRyaWJ1dGVzKCkpOwotICAg
ICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzLmdldCgpOwotICAgIH0KLQotICAgIFBhc3NSZWZQdHI8
TmFtZWROb2RlTWFwPiB0YWtlQXRyaWJ1dGVzKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh1c2Vz
QXR0cmlidXRlcygpKTsKLSAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcy5yZWxlYXNlKCk7Ci0g
ICAgfQotCi0gICAgY29uc3QgSFRNTFRva2VuOjpEYXRhVmVjdG9yJiBjaGFyYWN0ZXJzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJh
Y3Rlcik7Ci0gICAgICAgIHJldHVybiAqbV9leHRlcm5hbENoYXJhY3RlcnM7Ci0gICAgfQotCi0g
ICAgY29uc3QgU3RyaW5nJiBjb21tZW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQpOwotICAgICAgICByZXR1cm4gbV9kYXRh
OwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBw
dWJsaWMgaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCi0gICAgV1RGOjpWZWN0b3I8VUNoYXI+
JiBwdWJsaWNJZGVudGlmaWVyKCkgY29uc3QKKyAgICAgICAgOiBBdG9taWNNYXJrdXBUb2tlbkJh
c2U8SFRNTFRva2VuPih0eXBlLCBuYW1lLCBhdHRyaWJ1dGVzKQogICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7Ci0gICAgICAgIHJldHVybiBt
X2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXI7Ci0gICAgfQotCi0gICAgLy8gRklYTUU6
IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBtaXNzaW5nIHN5c3RlbSBpZGVudGlmZXIgYW5kIGFuIGVt
cHR5IG9uZS4KLSAgICBXVEY6OlZlY3RvcjxVQ2hhcj4mIHN5c3RlbUlkZW50aWZpZXIoKSBjb25z
dAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQ
RSk7Ci0gICAgICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXI7CiAg
ICAgfQogCiAgICAgYm9vbCBmb3JjZVF1aXJrcygpIGNvbnN0CkBAIC0xOTgsNzMgKzk3LDggQEAg
cHVibGljOgogICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBF
KTsKICAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fZm9yY2VRdWlya3M7CiAgICAgfQot
Ci1wcml2YXRlOgotICAgIEhUTUxUb2tlblR5cGVzOjpUeXBlIG1fdHlwZTsKLQotICAgIHZvaWQg
aW5pdGlhbGl6ZUF0dHJpYnV0ZXMoY29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGVMaXN0JiBhdHRy
aWJ1dGVzKTsKLSAgICAKLSAgICBib29sIHVzZXNOYW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBI
VE1MVG9rZW5UeXBlczo6RW5kVGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQ
RTsKLSAgICB9Ci0KLSAgICBib29sIHVzZXNBdHRyaWJ1dGVzKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9
PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOwotICAgIH0KLQotICAgIC8vICJuYW1lIiBmb3IgRE9D
VFlQRSwgU3RhcnRUYWcsIGFuZCBFbmRUYWcKLSAgICBBdG9taWNTdHJpbmcgbV9uYW1lOwotCi0g
ICAgLy8gImRhdGEiIGZvciBDb21tZW50Ci0gICAgU3RyaW5nIG1fZGF0YTsKLQotICAgIC8vICJj
aGFyYWN0ZXJzIiBmb3IgQ2hhcmFjdGVyCi0gICAgLy8KLSAgICAvLyBXZSBkb24ndCB3YW50IHRv
IGNvcHkgdGhlIHRoZSBjaGFyYWN0ZXJzIG91dCBvZiB0aGUgSFRNTFRva2VuLCBzbyB3ZQotICAg
IC8vIGtlZXAgYSBwb2ludGVyIHRvIGl0cyBidWZmZXIgaW5zdGVhZC4gIFRoaXMgYnVmZmVyIGlz
IG93bmVkIGJ5IHRoZQotICAgIC8vIEhUTUxUb2tlbiBhbmQgY2F1c2VzIGEgbGlmZXRpbWUgZGVw
ZW5kZW5jZSBiZXR3ZWVuIHRoZXNlIG9iamVjdHMuCi0gICAgLy8KLSAgICAvLyBGSVhNRTogQWRk
IGEgbWVjaGFuaXNtIGZvciAiaW50ZXJuYWxpemluZyIgdGhlIGNoYXJhY3RlcnMgd2hlbiB0aGUK
LSAgICAvLyAgICAgICAgSFRNTFRva2VuIGlzIGRlc3RydWN0ZWQuCi0gICAgY29uc3QgSFRNTFRv
a2VuOjpEYXRhVmVjdG9yKiBtX2V4dGVybmFsQ2hhcmFjdGVyczsKLQotICAgIC8vIEZvciBET0NU
WVBFCi0gICAgT3duUHRyPEhUTUxUb2tlblR5cGVzOjpEb2N0eXBlRGF0YT4gbV9kb2N0eXBlRGF0
YTsKLQotICAgIC8vIEZvciBTdGFydFRhZyBhbmQgRW5kVGFnCi0gICAgYm9vbCBtX3NlbGZDbG9z
aW5nOwotCi0gICAgUmVmUHRyPE5hbWVkTm9kZU1hcD4gbV9hdHRyaWJ1dGVzOwogfTsKIAotaW5s
aW5lIHZvaWQgQXRvbWljSFRNTFRva2VuOjppbml0aWFsaXplQXR0cmlidXRlcyhjb25zdCBIVE1M
VG9rZW46OkF0dHJpYnV0ZUxpc3QmIGF0dHJpYnV0ZXMpCi17Ci0gICAgc2l6ZV90IHNpemUgPSBh
dHRyaWJ1dGVzLnNpemUoKTsKLSAgICBpZiAoIXNpemUpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fYXR0cmlidXRlcyA9IE5hbWVkTm9kZU1hcDo6Y3JlYXRlKCk7Ci0gICAgbV9hdHRyaWJ1dGVz
LT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IEhUTUxUb2tlbjo6QXR0cmlidXRlJiBhdHRy
aWJ1dGUgPSBhdHRyaWJ1dGVzW2ldOwotICAgICAgICBpZiAoYXR0cmlidXRlLm1fbmFtZS5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGJlIGFibGUgdG8gYWRkIHRoZSBmb2xsb3dpbmcgQVNTRVJUIG9uY2Ugd2UgZml4Ci0gICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjk3MQotICAg
ICAgICAvLyAgIEFTU0VSVChhdHRyaWJ1dGUubV9uYW1lUmFuZ2UubV9zdGFydCk7Ci0gICAgICAg
IEFTU0VSVChhdHRyaWJ1dGUubV9uYW1lUmFuZ2UubV9lbmQpOwotICAgICAgICBBU1NFUlQoYXR0
cmlidXRlLm1fdmFsdWVSYW5nZS5tX3N0YXJ0KTsKLSAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZS5t
X3ZhbHVlUmFuZ2UubV9lbmQpOwotCi0gICAgICAgIFN0cmluZyBuYW1lKGF0dHJpYnV0ZS5tX25h
bWUuZGF0YSgpLCBhdHRyaWJ1dGUubV9uYW1lLnNpemUoKSk7Ci0gICAgICAgIFN0cmluZyB2YWx1
ZShhdHRyaWJ1dGUubV92YWx1ZS5kYXRhKCksIGF0dHJpYnV0ZS5tX3ZhbHVlLnNpemUoKSk7Ci0g
ICAgICAgIG1fYXR0cmlidXRlcy0+aW5zZXJ0QXR0cmlidXRlKEF0dHJpYnV0ZTo6Y3JlYXRlTWFw
cGVkKG5hbWUsIHZhbHVlKSwgZmFsc2UpOwotICAgIH0KLX0KLQogfQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAKaW5kZXggZGZkNzZjNjNm
Mjg1YThiOTdlMGY2YzFiODBmNTY0YjBiOTcwNjEwMi4uYjM5Nzc2OGY4NjMxNzk1NjE5MjZlYTkx
OWYzMmMxNjY1MGZjMDE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRva2VuaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRv
a2VuaXplci5jcHAKQEAgLTQ3LDYgKzQ3LDI2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAorLy8gVGhpcyBoYXMgdG8gZ28gaW4gYSAuY3BwIGZp
bGUsIGFzIHRoZSBsaW5rZXIgZG9lc24ndCBsaWtlIGl0IGJlaW5nIGluY2x1ZGVkIG1vcmUgdGhh
biBvbmNlLgorLy8gV2UgZG9uJ3QgaGF2ZSBhbiBIVE1MVG9rZW4uY3BwIHRob3VnaCwgc28gdGhp
cyBpcyB0aGUgbmV4dCBiZXN0IHBsYWNlLgordGVtcGxhdGU8PgorUXVhbGlmaWVkTmFtZSBBdG9t
aWNNYXJrdXBUb2tlbkJhc2U8SFRNTFRva2VuPjo6bmFtZUZvckF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGVCYXNlJiBhdHRyaWJ1dGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIFF1YWxpZmllZE5hbWUo
bnVsbEF0b20sIEF0b21pY1N0cmluZyhhdHRyaWJ1dGUubV9uYW1lLmRhdGEoKSwgYXR0cmlidXRl
Lm1fbmFtZS5zaXplKCkpLCBudWxsQXRvbSk7Cit9CisKK3RlbXBsYXRlPD4KK2Jvb2wgQXRvbWlj
TWFya3VwVG9rZW5CYXNlPEhUTUxUb2tlbj46OnVzZXNOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEU7Cit9
CisKK3RlbXBsYXRlPD4KK2Jvb2wgQXRvbWljTWFya3VwVG9rZW5CYXNlPEhUTUxUb2tlbj46OnVz
ZXNBdHRyaWJ1dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlID09IEhUTUxUb2tlblR5
cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZzsKK30KKwog
bmFtZXNwYWNlIHsKIAogaW5saW5lIFVDaGFyIHRvTG93ZXJDYXNlKFVDaGFyIGNjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgKaW5kZXggYjM5MDg5NjJhM2Vm
MWZkNzg2NThkM2M5ZWQyMTc3N2RiNDNkYmUyYi4uMDNlNzNiNjlkZDQyNTlkNWNjMzhjYjExMjli
NzhhNzliMGUyY2ZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJr
dXBUb2tlbkJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2Vu
QmFzZS5oCkBAIC02NiwxMyArNjYsMTQgQEAgcHVibGljOgogICAgIFdURjo6VmVjdG9yPFVDaGFy
LCAzMj4gbV92YWx1ZTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFR5cGVTZXQsIHR5cGVuYW1l
IERvY3R5cGVEYXRhID0gRG9jdHlwZURhdGFCYXNlLCB0eXBlbmFtZSBBdHRyaWJ1dGVUeXBlID0g
QXR0cmlidXRlQmFzZT4KK3RlbXBsYXRlPHR5cGVuYW1lIFR5cGVTZXQsIHR5cGVuYW1lIERvY3R5
cGVEYXRhVHlwZSA9IERvY3R5cGVEYXRhQmFzZSwgdHlwZW5hbWUgQXR0cmlidXRlVHlwZSA9IEF0
dHJpYnV0ZUJhc2U+CiBjbGFzcyBNYXJrdXBUb2tlbkJhc2UgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKE1hcmt1cFRva2VuQmFzZSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBUeXBlU2V0IFR5cGU7CiAgICAgdHlwZWRlZiBBdHRyaWJ1dGVU
eXBlIEF0dHJpYnV0ZTsKKyAgICB0eXBlZGVmIERvY3R5cGVEYXRhVHlwZSBEb2N0eXBlRGF0YTsK
IAogICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8QXR0cmlidXRlLCAxMD4gQXR0cmlidXRlTGlzdDsK
ICAgICB0eXBlZGVmIFdURjo6VmVjdG9yPFVDaGFyLCAxMDI0PiBEYXRhVmVjdG9yOwpAQCAtMzUw
LDEwICszNTEsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gbV9kYXRhOwogICAgIH0K
IAotICAgIC8vIEZJWE1FOiBJJ20gbm90IHN1cmUgd2hhdCB0aGUgZmluYWwgcmVsYXRpb25zaGlw
IGJldHdlZW4gSFRNTFRva2VuIGFuZAotICAgIC8vIEF0b21pY0hUTUxUb2tlbiB3aWxsIGJlLiBJ
J20gbWFya2luZyB0aGlzIGEgZnJpZW5kIGZvciBub3csIGJ1dCB3ZSdsbAorICAgIC8vIEZJWE1F
OiBJJ20gbm90IHN1cmUgd2hhdCB0aGUgZmluYWwgcmVsYXRpb25zaGlwIGJldHdlZW4gTWFya3Vw
VG9rZW5CYXNlIGFuZAorICAgIC8vIEF0b21pY01hcmt1cFRva2VuQmFzZSB3aWxsIGJlLiBJJ20g
bWFya2luZyB0aGlzIGEgZnJpZW5kIGZvciBub3csIGJ1dCB3ZSdsbAogICAgIC8vIHdhbnQgdG8g
ZW5kIHVwIHdpdGggYSBjbGVhbmVyIGludGVyZmFjZSBiZXR3ZWVuIHRoZSB0d28gY2xhc3Nlcy4K
LSAgICBmcmllbmQgY2xhc3MgQXRvbWljSFRNTFRva2VuOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFRva2VuPgorICAgIGZyaWVuZCBjbGFzcyBBdG9taWNNYXJrdXBUb2tlbkJhc2U7CiAKICAgICB0
eXBlbmFtZSBUeXBlOjpUeXBlIG1fdHlwZTsKICAgICB0eXBlbmFtZSBBdHRyaWJ1dGU6OlJhbmdl
IG1fcmFuZ2U7IC8vIEFsd2F5cyBzdGFydHMgYXQgemVyby4KQEAgLTM3MSw2ICszNzMsMTc4IEBA
IHByb3RlY3RlZDoKICAgICBBdHRyaWJ1dGUqIG1fY3VycmVudEF0dHJpYnV0ZTsKIH07CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFRva2VuPgorY2xhc3MgQXRvbWljTWFya3VwVG9rZW5CYXNlIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdG9taWNNYXJrdXBUb2tlbkJhc2UpOworcHVibGljOgor
ICAgIEF0b21pY01hcmt1cFRva2VuQmFzZShUb2tlbiogdG9rZW4pCisgICAgICAgIDogbV90eXBl
KHRva2VuLT50eXBlKCkpCisgICAgeworICAgICAgICBBU1NFUlQodG9rZW4pOworCisgICAgICAg
IHN3aXRjaCAobV90eXBlKSB7CisgICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OlVuaW5pdGlhbGl6
ZWQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpET0NUWVBFOgorICAgICAgICAgICAgbV9uYW1l
ID0gQXRvbWljU3RyaW5nKHRva2VuLT5uYW1lKCkuZGF0YSgpLCB0b2tlbi0+bmFtZSgpLnNpemUo
KSk7CisgICAgICAgICAgICBtX2RvY3R5cGVEYXRhID0gdG9rZW4tPm1fZG9jdHlwZURhdGEucmVs
ZWFzZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkVu
ZE9mRmlsZToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRva2VuOjpUeXBlOjpT
dGFydFRhZzoKKyAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6RW5kVGFnOiB7CisgICAgICAgICAg
ICBtX3NlbGZDbG9zaW5nID0gdG9rZW4tPnNlbGZDbG9zaW5nKCk7CisgICAgICAgICAgICBtX25h
bWUgPSBBdG9taWNTdHJpbmcodG9rZW4tPm5hbWUoKS5kYXRhKCksIHRva2VuLT5uYW1lKCkuc2l6
ZSgpKTsKKyAgICAgICAgICAgIGluaXRpYWxpemVBdHRyaWJ1dGVzKHRva2VuLT5hdHRyaWJ1dGVz
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUb2tlbjo6
VHlwZTo6Q29tbWVudDoKKyAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tlbi0+Y29tbWVu
dCgpLmRhdGEoKSwgdG9rZW4tPmNvbW1lbnQoKS5zaXplKCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgVG9rZW46OlR5cGU6OkNoYXJhY3RlcjoKKyAgICAgICAgICAgIG1fZXh0
ZXJuYWxDaGFyYWN0ZXJzID0gJnRva2VuLT5jaGFyYWN0ZXJzKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorCisgICAgQXRvbWljTWFya3VwVG9rZW5CYXNlKHR5cGVuYW1lIFRva2VuOjpUeXBlOjpUeXBl
IHR5cGUsIEF0b21pY1N0cmluZyBuYW1lLCBQYXNzUmVmUHRyPE5hbWVkTm9kZU1hcD4gYXR0cmli
dXRlcyA9IDApCisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgICAgICwgbV9uYW1lKG5hbWUp
CisgICAgICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCisgICAgeworICAgICAgICBBU1NF
UlQodXNlc05hbWUoKSk7CisgICAgfQorCisgICAgdHlwZW5hbWUgVG9rZW46OlR5cGU6OlR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCh1c2VzTmFtZSgpKTsKKyAgICAg
ICAgcmV0dXJuIG1fbmFtZTsKKyAgICB9CisKKyAgICB2b2lkIHNldE5hbWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHVzZXNOYW1lKCkpOworICAgICAg
ICBtX25hbWUgPSBuYW1lOworICAgIH0KKworICAgIGJvb2wgc2VsZkNsb3NpbmcoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUb2tlbjo6VHlwZTo6U3RhcnRUYWcgfHwg
bV90eXBlID09IFRva2VuOjpUeXBlOjpFbmRUYWcpOworICAgICAgICByZXR1cm4gbV9zZWxmQ2xv
c2luZzsKKyAgICB9CisKKyAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh1c2VzQXR0
cmlidXRlcygpKTsKKyAgICAgICAgaWYgKCFtX2F0dHJpYnV0ZXMpCisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcy0+Z2V0QXR0cmlidXRlSXRlbShhdHRy
aWJ1dGVOYW1lKTsKKyAgICB9CisKKyAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZXMoKSBjb25z
dAorICAgIHsKKyAgICAgICAgQVNTRVJUKHVzZXNBdHRyaWJ1dGVzKCkpOworICAgICAgICByZXR1
cm4gbV9hdHRyaWJ1dGVzLmdldCgpOworICAgIH0KKworICAgIFBhc3NSZWZQdHI8TmFtZWROb2Rl
TWFwPiB0YWtlQXRyaWJ1dGVzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCh1c2VzQXR0cmlidXRl
cygpKTsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcy5yZWxlYXNlKCk7CisgICAgfQorCisg
ICAgY29uc3QgdHlwZW5hbWUgVG9rZW46OkRhdGFWZWN0b3ImIGNoYXJhY3RlcnMoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUb2tlbjo6VHlwZTo6Q2hhcmFjdGVyKTsK
KyAgICAgICAgcmV0dXJuICptX2V4dGVybmFsQ2hhcmFjdGVyczsKKyAgICB9CisKKyAgICBjb25z
dCBTdHJpbmcmIGNvbW1lbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBUb2tlbjo6VHlwZTo6Q29tbWVudCk7CisgICAgICAgIHJldHVybiBtX2RhdGE7CisgICAgfQor
CisgICAgLy8gRklYTUU6IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBtaXNzaW5nIHB1YmxpYyBpZGVu
dGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4KKyAgICBXVEY6OlZlY3RvcjxVQ2hhcj4mIHB1YmxpY0lk
ZW50aWZpZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUb2tlbjo6
VHlwZTo6RE9DVFlQRSk7CisgICAgICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lk
ZW50aWZpZXI7CisgICAgfQorCisgICAgLy8gRklYTUU6IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBt
aXNzaW5nIHN5c3RlbSBpZGVudGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4KKyAgICBXVEY6OlZlY3Rv
cjxVQ2hhcj4mIHN5c3RlbUlkZW50aWZpZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBUb2tlbjo6VHlwZTo6RE9DVFlQRSk7CisgICAgICAgIHJldHVybiBtX2RvY3R5
cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXI7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdHlw
ZW5hbWUgVG9rZW46OlR5cGU6OlR5cGUgbV90eXBlOworCisgICAgdm9pZCBpbml0aWFsaXplQXR0
cmlidXRlcyhjb25zdCB0eXBlbmFtZSBUb2tlbjo6QXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcyk7
CisgICAgUXVhbGlmaWVkTmFtZSBuYW1lRm9yQXR0cmlidXRlKGNvbnN0IHR5cGVuYW1lIFRva2Vu
OjpBdHRyaWJ1dGUmKSBjb25zdDsKKworICAgIGJvb2wgdXNlc05hbWUoKSBjb25zdDsKKworICAg
IGJvb2wgdXNlc0F0dHJpYnV0ZXMoKSBjb25zdDsKKworICAgIC8vICJuYW1lIiBmb3IgRE9DVFlQ
RSwgU3RhcnRUYWcsIGFuZCBFbmRUYWcKKyAgICBBdG9taWNTdHJpbmcgbV9uYW1lOworCisgICAg
Ly8gImRhdGEiIGZvciBDb21tZW50CisgICAgU3RyaW5nIG1fZGF0YTsKKworICAgIC8vICJjaGFy
YWN0ZXJzIiBmb3IgQ2hhcmFjdGVyCisgICAgLy8KKyAgICAvLyBXZSBkb24ndCB3YW50IHRvIGNv
cHkgdGhlIHRoZSBjaGFyYWN0ZXJzIG91dCBvZiB0aGUgVG9rZW4sIHNvIHdlCisgICAgLy8ga2Vl
cCBhIHBvaW50ZXIgdG8gaXRzIGJ1ZmZlciBpbnN0ZWFkLiBUaGlzIGJ1ZmZlciBpcyBvd25lZCBi
eSB0aGUKKyAgICAvLyBUb2tlbiBhbmQgY2F1c2VzIGEgbGlmZXRpbWUgZGVwZW5kZW5jZSBiZXR3
ZWVuIHRoZXNlIG9iamVjdHMuCisgICAgLy8KKyAgICAvLyBGSVhNRTogQWRkIGEgbWVjaGFuaXNt
IGZvciAiaW50ZXJuYWxpemluZyIgdGhlIGNoYXJhY3RlcnMgd2hlbiB0aGUKKyAgICAvLyAgICAg
ICAgSFRNTFRva2VuIGlzIGRlc3RydWN0ZWQuCisgICAgY29uc3QgdHlwZW5hbWUgVG9rZW46OkRh
dGFWZWN0b3IqIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzOworCisgICAgLy8gRm9yIERPQ1RZUEUKKyAg
ICBPd25QdHI8dHlwZW5hbWUgVG9rZW46OkRvY3R5cGVEYXRhPiBtX2RvY3R5cGVEYXRhOworCisg
ICAgLy8gRm9yIFN0YXJ0VGFnIGFuZCBFbmRUYWcKKyAgICBib29sIG1fc2VsZkNsb3Npbmc7CisK
KyAgICBSZWZQdHI8TmFtZWROb2RlTWFwPiBtX2F0dHJpYnV0ZXM7Cit9OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUb2tlbj4KK2lubGluZSB2b2lkIEF0b21pY01hcmt1cFRva2VuQmFzZTxUb2tlbj46
OmluaXRpYWxpemVBdHRyaWJ1dGVzKGNvbnN0IHR5cGVuYW1lIFRva2VuOjpBdHRyaWJ1dGVMaXN0
JiBhdHRyaWJ1dGVzKQoreworICAgIHNpemVfdCBzaXplID0gYXR0cmlidXRlcy5zaXplKCk7Cisg
ICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2F0dHJpYnV0ZXMgPSBOYW1l
ZE5vZGVNYXA6OmNyZWF0ZSgpOworICAgIG1fYXR0cmlidXRlcy0+cmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShzaXplKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAg
ICAgICBjb25zdCB0eXBlbmFtZSBUb2tlbjo6QXR0cmlidXRlJiBhdHRyaWJ1dGUgPSBhdHRyaWJ1
dGVzW2ldOworICAgICAgICBpZiAoYXR0cmlidXRlLm1fbmFtZS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8g
YWRkIHRoZSBmb2xsb3dpbmcgQVNTRVJUIG9uY2Ugd2UgZml4CisgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjk3MQorICAgICAgICAvLyAgIEFTU0VS
VChhdHRyaWJ1dGUubV9uYW1lUmFuZ2UubV9zdGFydCk7CisgICAgICAgIEFTU0VSVChhdHRyaWJ1
dGUubV9uYW1lUmFuZ2UubV9lbmQpOworICAgICAgICBBU1NFUlQoYXR0cmlidXRlLm1fdmFsdWVS
YW5nZS5tX3N0YXJ0KTsKKyAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZS5tX3ZhbHVlUmFuZ2UubV9l
bmQpOworCisgICAgICAgIFN0cmluZyB2YWx1ZShhdHRyaWJ1dGUubV92YWx1ZS5kYXRhKCksIGF0
dHJpYnV0ZS5tX3ZhbHVlLnNpemUoKSk7CisgICAgICAgIG1fYXR0cmlidXRlcy0+aW5zZXJ0QXR0
cmlidXRlKEF0dHJpYnV0ZTo6Y3JlYXRlTWFwcGVkKG5hbWVGb3JBdHRyaWJ1dGUoYXR0cmlidXRl
KSwgdmFsdWUpLCBmYWxzZSk7CisgICAgfQorfQorCiB9CiAKICNlbmRpZiAvLyBNYXJrdXBUb2tl
bkJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbi5o
IGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbi5oCmluZGV4IDRjMTJlMjE4YzBk
YmUxMGRhNmFhMmQyNGY0YTFjNGM0MDM5Zjc1MDguLmJjNWZhNzFkYTdhYWEzMTZmNzJiNmRlYjhi
MjIwNzVjMDQyZmM2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
VG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuLmgKQEAgLTEz
Nyw3ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fdHlwZSA9IFhNTFRva2VuVHlwZXM6OlhN
TERlY2xhcmF0aW9uOwogICAgICAgICBtX3htbERlY2xhcmF0aW9uRGF0YSA9IGFkb3B0UHRyKG5l
dyBYTUxEZWNsYXJhdGlvbkRhdGEoKSk7CiAgICAgfQotICAgIAorCiAgICAgdm9pZCBhcHBlbmRU
b1hNTFZlcnNpb24oVUNoYXIgY2hhcmFjdGVyKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNoYXJh
Y3Rlcik7CkBAIC0zODgsOCArMzg4LDkgQEAgcHVibGljOgogI2VuZGlmIC8vIE5ERUJVRwogCiBw
cml2YXRlOgotCi0gICAgdHlwZWRlZiBEb2N0eXBlRGF0YUJhc2UgRG9jdHlwZURhdGE7CisgICAg
Ly8gQXRvbWljWE1MVG9rZW4gbmVlZHMgdG8gc3RlYWwgc29tZSBvZiBvdXIgcG9pbnRlcnMgZnJv
bSB1cworICAgIC8vIEZJWE1FOiBhZGQgdGFrZSogZnVuY3Rpb25zCisgICAgZnJpZW5kIGNsYXNz
IEF0b21pY1hNTFRva2VuOwogCiAgICAgLy8gInRhcmdldCIgZm9yIFByb2Nlc3NpbmdJbnN0cnVj
dGlvbiwgInByZWZpeCIgZm9yIFN0YXJ0VGFnIGFuZCBFbmRUYWcKICAgICBEYXRhVmVjdG9yIG1f
dGFyZ2V0OwpAQCAtMzk4LDYgKzM5OSw4MSBAQCBwcml2YXRlOgogICAgIE93blB0cjxYTUxEZWNs
YXJhdGlvbkRhdGE+IG1feG1sRGVjbGFyYXRpb25EYXRhOwogfTsKIAorY2xhc3MgQXRvbWljWE1M
VG9rZW4gOiBwdWJsaWMgQXRvbWljTWFya3VwVG9rZW5CYXNlPFhNTFRva2VuPiB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQXRvbWljWE1MVG9rZW4pOworcHVibGljOgorICAgIEF0b21pY1hN
TFRva2VuKFhNTFRva2VuJiB0b2tlbikKKyAgICAgICAgOiBBdG9taWNNYXJrdXBUb2tlbkJhc2U8
WE1MVG9rZW4+KCZ0b2tlbikKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAg
ICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOgorICAgICAgICAg
ICAgbV9uYW1lID0gQXRvbWljU3RyaW5nKHRva2VuLnRhcmdldCgpLmRhdGEoKSwgdG9rZW4udGFy
Z2V0KCkuc2l6ZSgpKTsKKyAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tlbi5kYXRhKCku
ZGF0YSgpLCB0b2tlbi5kYXRhKCkuc2l6ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFhNTFRva2VuVHlwZXM6OlhNTERlY2xhcmF0aW9uOgorICAgICAgICAgICAgbV94bWxE
ZWNsYXJhdGlvbkRhdGEgPSB0b2tlbi5tX3htbERlY2xhcmF0aW9uRGF0YS5yZWxlYXNlKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpTdGFydFRhZzoK
KyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpFbmRUYWc6IHsKKyAgICAgICAgICAgIGlmICh0
b2tlbi5wcmVmaXgoKS5zaXplKCkpCisgICAgICAgICAgICAgICAgbV9wcmVmaXggPSBBdG9taWNT
dHJpbmcodG9rZW4ucHJlZml4KCkuZGF0YSgpLCB0b2tlbi5wcmVmaXgoKS5zaXplKCkpOworICAg
ICAgICAgICAgaW5pdGlhbGl6ZUF0dHJpYnV0ZXModG9rZW4uYXR0cmlidXRlcygpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6Q0RB
VEE6CisgICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmcodG9rZW4uZGF0YSgpLmRhdGEoKSwgdG9r
ZW4uZGF0YSgpLnNpemUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBYTUxU
b2tlblR5cGVzOjpFbnRpdHk6CisgICAgICAgICAgICBtX25hbWUgPSBBdG9taWNTdHJpbmcodG9r
ZW4ubmFtZSgpLmRhdGEoKSwgdG9rZW4ubmFtZSgpLnNpemUoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorCisgICAgQXRvbWljWE1MVG9rZW4oWE1MVG9rZW5UeXBlczo6VHlwZSB0eXBlLCBBdG9taWNT
dHJpbmcgbmFtZSwgUGFzc1JlZlB0cjxOYW1lZE5vZGVNYXA+IGF0dHJpYnV0ZXMgPSAwKQorICAg
ICAgICA6IEF0b21pY01hcmt1cFRva2VuQmFzZTxYTUxUb2tlbj4odHlwZSwgbmFtZSwgYXR0cmli
dXRlcykKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgoKSBj
b25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpTdGFy
dFRhZyB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAgcmV0dXJu
IG1fcHJlZml4OworICAgIH0KKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdGFyZ2V0KCkgY29u
c3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6UHJvY2Vz
c2luZ0luc3RydWN0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1fbmFtZTsKKyAgICB9CisKKyAgICBj
b25zdCBTdHJpbmcmIGRhdGEoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBYTUxUb2tlblR5cGVzOjpDREFUQSB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6UHJvY2Vz
c2luZ0luc3RydWN0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YTsKKyAgICB9CisKKyAgICBX
VEY6OlZlY3RvcjxVQ2hhcj4mIHhtbFZlcnNpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpYTUxEZWNsYXJhdGlvbik7CisgICAgICAgIHJl
dHVybiBtX3htbERlY2xhcmF0aW9uRGF0YS0+bV92ZXJzaW9uOworICAgIH0KKworICAgIGJvb2wg
eG1sU3RhbmRhbG9uZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFhN
TFRva2VuVHlwZXM6OlhNTERlY2xhcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1feG1sRGVjbGFy
YXRpb25EYXRhLT5tX2hhc1N0YW5kYWxvbmUgJiYgbV94bWxEZWNsYXJhdGlvbkRhdGEtPm1fc3Rh
bmRhbG9uZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgLy8gInByZWZpeCIgZm9yIFN0YXJ0VGFn
LCBFbmRUYWcKKyAgICBBdG9taWNTdHJpbmcgbV9wcmVmaXg7CisKKyAgICAvLyBGb3IgWE1MIGRl
Y2xhcmF0aW9uCisgICAgT3duUHRyPFhNTFRva2VuOjpYTUxEZWNsYXJhdGlvbkRhdGE+IG1feG1s
RGVjbGFyYXRpb25EYXRhOworfTsKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW5pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MVG9rZW5pemVyLmNwcAppbmRleCA5Nzk4MDYyNGM2Yzg0YmQyY2I4OWM5NWEzNmI0
YWU3MmUxMWU0YzVhLi41NGVmOThiY2RhMDM1YTk4MWY5Y2I2MTcxYjhmYTJiMDM0NmU4YTU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuY3BwCkBAIC00Miw2ICs0
MiwyNiBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8v
IFRoaXMgaGFzIHRvIGdvIGluIGEgLmNwcCBmaWxlLCBhcyB0aGUgbGlua2VyIGRvZXNuJ3QgbGlr
ZSBpdCBiZWluZyBpbmNsdWRlZCBtb3JlIHRoYW4gb25jZS4KKy8vIFdlIGRvbid0IGhhdmUgYW4g
WE1MVG9rZW4uY3BwIHRob3VnaCwgc28gdGhpcyBpcyB0aGUgbmV4dCBiZXN0IHBsYWNlLgordGVt
cGxhdGU8PgorUXVhbGlmaWVkTmFtZSBBdG9taWNNYXJrdXBUb2tlbkJhc2U8WE1MVG9rZW4+Ojpu
YW1lRm9yQXR0cmlidXRlKGNvbnN0IFhNTFRva2VuOjpBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29u
c3QKK3sKKyAgICByZXR1cm4gUXVhbGlmaWVkTmFtZShhdHRyaWJ1dGUubV9wcmVmaXguaXNFbXB0
eSgpID8gbnVsbEF0b20gOiBBdG9taWNTdHJpbmcoYXR0cmlidXRlLm1fcHJlZml4LmRhdGEoKSwg
YXR0cmlidXRlLm1fcHJlZml4LnNpemUoKSksIEF0b21pY1N0cmluZyhhdHRyaWJ1dGUubV9uYW1l
LmRhdGEoKSwgYXR0cmlidXRlLm1fbmFtZS5zaXplKCkpLCBudWxsQXRvbSk7Cit9CisKK3RlbXBs
YXRlPD4KK2Jvb2wgQXRvbWljTWFya3VwVG9rZW5CYXNlPFhNTFRva2VuPjo6dXNlc05hbWUoKSBj
b25zdAoreworICAgIHJldHVybiBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwg
bV90eXBlID09IFhNTFRva2VuVHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBl
czo6RE9DVFlQRSB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6RW50aXR5OworfQorCit0ZW1w
bGF0ZTw+Citib29sIEF0b21pY01hcmt1cFRva2VuQmFzZTxYTUxUb2tlbj46OnVzZXNBdHRyaWJ1
dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlID09IFhNTFRva2VuVHlwZXM6OlN0YXJ0
VGFnIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpFbmRUYWc7Cit9CisKIG5hbWVzcGFjZSB7
CiAKIGlubGluZSBib29sIGlzVmFsaWROYW1lU3RhcnQoVUNoYXIgY2MpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>