<?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>67179</bug_id>
          
          <creation_ts>2011-08-29 22:26:12 -0700</creation_ts>
          <short_desc>[chromium] Allow GraphicsContexts to be created from MockWebGraphicsContexts</short_desc>
          <delta_ts>2011-08-31 07:34:04 -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>
          <dependson>67172</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nat Duca">nduca</reporter>
          <assigned_to name="Nat Duca">nduca</assigned_to>
          <cc>apavlov</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>458704</commentid>
    <comment_count>0</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-08-29 22:26:12 -0700</bug_when>
    <thetext>[chromium] Allow GraphicsContexts to be created from MockWebGraphicsContexts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458705</commentid>
    <comment_count>1</comment_count>
      <attachid>105579</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-08-29 22:26:32 -0700</bug_when>
    <thetext>Created attachment 105579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458710</commentid>
    <comment_count>2</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-08-29 22:34:33 -0700</bug_when>
    <thetext>@kbr, I&apos;d love any feedback you have on the overall structure here. I&apos;m absolutely fine trying a totally different approach than this --- I just took a stab in the dark at this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458983</commentid>
    <comment_count>3</comment_count>
      <attachid>105579</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-08-30 10:08:33 -0700</bug_when>
    <thetext>Comment on attachment 105579
Patch

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

Looks good overall. This one will have to be merged with the fix for https://bugs.webkit.org/show_bug.cgi?id=67172 which just landed. Couple of minor comments. I&apos;ll r+ this in case you want to fix the issues upon landing, or feel free to upload another version.

&gt; Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp:120
&gt; +PassRefPtr&lt;GraphicsContext3D&gt; GraphicsContext3DInternal::createFromWebContext(PassOwnPtr&lt;WebKit::WebGraphicsContext3D&gt; webContext, GraphicsContext3D::Attributes attrs, HostWindow* hostWindow, GraphicsContext3D::RenderStyle renderStyle)

This is clearly the key method. I see that there&apos;s really no other place to put it (can&apos;t go in GC3D, because that can&apos;t reference our WebKit API). However could you perhaps name it something like createGraphicsContext3DFromWebContext to avoid confusion?

&gt; Source/WebKit/chromium/src/GraphicsContext3DInternal.h:59
&gt; +    static PassRefPtr&lt;GraphicsContext3D&gt; createFromWebContext(PassOwnPtr&lt;WebKit::WebGraphicsContext3D&gt;, GraphicsContext3D::Attributes, HostWindow*, GraphicsContext3D::RenderStyle);

Could you indicate that the createFromWebContext method (or whatever it ends up being called) is only for testing purposes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459087</commentid>
    <comment_count>4</comment_count>
      <attachid>105668</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-08-30 12:28:48 -0700</bug_when>
    <thetext>Created attachment 105668
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459152</commentid>
    <comment_count>5</comment_count>
      <attachid>105668</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-30 13:42:24 -0700</bug_when>
    <thetext>Comment on attachment 105668
Patch for landing

Clearing flags on attachment: 105668

Committed r94106: &lt;http://trac.webkit.org/changeset/94106&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459153</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-30 13:42:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459616</commentid>
    <comment_count>7</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-31 07:34:04 -0700</bug_when>
    <thetext>The landed patch breaks at least gclient:
&quot;Error: Missing input file src\third_party\WebKit\Source\WebKit\chromium\tests\MockGraphicsContext3D.h&quot;
as it includes a new file &apos;tests/MockGraphicsContext3D.h&apos; which is not added by the patch. I have filed bug 67288 to track this issue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105579</attachid>
            <date>2011-08-29 22:26:32 -0700</date>
            <delta_ts>2011-08-30 12:28:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67179-20110829222630.patch</filename>
            <type>text/plain</type>
            <size>16405</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM5NTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
MDQ2ZmIxM2M5Yjc4ZjgwY2I5Y2ZhMmFjMWE2MDAwNTY3MjNmNTg3Yy4uMTAwZWJlNzJlNzIzMjU4
NjZmMjU4NjFiODhiOTY4OGVlMGY4MjBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMyBAQAorMjAxMS0wOC0yOSAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW2Nocm9taXVtXSBBbGxvdyBHcmFwaGljc0NvbnRleHRzIHRvIGJlIGNyZWF0
ZWQgZnJvbSBNb2NrV2ViR3JhcGhpY3NDb250ZXh0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjcxNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHNyYy9HcmFw
aGljc0NvbnRleHQzRENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZUZyb21XZWJDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUpOgorICAgICAgICAqIHNy
Yy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmg6CisgICAgICAgICogdGVzdHMvTW9ja0dyYXBo
aWNzQ29udGV4dDNEVGVzdC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL01vY2tXZWJHcmFwaGljc0NvbnRleHQzRFRlc3QuY3BwLgorICAgICAgICAoRnJhbWVD
b3VudGluZ0NvbnRleHQ6OkZyYW1lQ291bnRpbmdDb250ZXh0KToKKyAgICAgICAgKEZyYW1lQ291
bnRpbmdDb250ZXh0OjpwcmVwYXJlVGV4dHVyZSk6CisgICAgICAgIChGcmFtZUNvdW50aW5nQ29u
dGV4dDo6ZnJhbWVDb3VudCk6CisgICAgICAgIChURVNUKToKKwogMjAxMS0wOC0yNyAgUGV0ZXIg
QmV2ZXJsb28gIDxwZXRlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVGVhY2ggdGhlIHVwZGF0
ZSBhbmQgYnVpbGQgc2NyaXB0cyBob3cgdG8gaGFuZGxlIGRlcGVuZGVuY2llcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggYmVhYTA4MjBhMDJiZTg0MjUxMjEyNTkwMjhkZTk4ZDE2
OTNhMzI4ZS4uNGNhMGU3NmE4ZmVmODNjNWQ0NTdlYWEzMzJkZjZmZDI3ZmYwMGRjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC02Myw4ICs2Myw5IEBACiAgICAgICAgICAgICAn
dGVzdHMvSW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0
cy9LZXlib2FyZFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9LVVJMVGVzdC5jcHAnLAor
ICAgICAgICAgICAgJ3Rlc3RzL01vY2tHcmFwaGljc0NvbnRleHQzRC5oJywKKyAgICAgICAgICAg
ICd0ZXN0cy9Nb2NrR3JhcGhpY3NDb250ZXh0M0RUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmgnLAotICAgICAgICAgICAgJ3Rlc3RzL01vY2tX
ZWJHcmFwaGljc0NvbnRleHQzRFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9QT0RBcmVu
YVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9QT0RJbnRlcnZhbFRyZWVUZXN0LmNwcCcs
CiAgICAgICAgICAgICAndGVzdHMvUE9EUmVkQmxhY2tUcmVlVGVzdC5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVt
LmNwcAppbmRleCA2ZWE4ZmQ4YTNlN2FmMjY3NzBkNzhiYTYwNTEwOTM2NjM1YjkyMTY4Li4yYjE0
NzkwZDRjNDdjOGFjNmVjZGRjZmQ4ZDY4MDEzYzc0MDBkYWFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcApA
QCAtODMsOCArODMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8v
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwKIAotR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpCi0gICAgOiBtX3dlYlZpZXdJbXBsKDApCitHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKFdlYktpdDo6
V2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsLCBQYXNzT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0Q+IHdlYkNvbnRleHQpCisgICAgOiBtX2ltcGwod2ViQ29udGV4dCkKKyAgICAsIG1f
d2ViVmlld0ltcGwod2ViVmlld0ltcGwpCiAgICAgLCBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0
ZW5zaW9ucyhmYWxzZSkKICAgICAsIG1fbGF5ZXJDb21wb3NpdGVkKGZhbHNlKQogICAgICwgbV9y
ZXNvdXJjZVNhZmV0eShSZXNvdXJjZVNhZmV0eVVua25vd24pCkBAIC05Niw2ICs5Nyw5IEBAIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKQogI2Vy
cm9yIE11c3QgcG9ydCB0byB5b3VyIHBsYXRmb3JtCiAjZW5kaWYKIHsKKyNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCisgICAgbV9jb21wb3NpdGluZ0xheWVyID0gV2ViR0xMYXllckNo
cm9taXVtOjpjcmVhdGUoMCk7CisjZW5kaWYKIH0KIAogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6fkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKQpAQCAtMTA4LDMyICsxMTIsMjEgQEAgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6fkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKQogI2Vu
ZGlmCiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aW5pdGlhbGl6ZShHcmFw
aGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywg
Ym9vbCByZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykKK1Bhc3NPd25QdHI8R3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbD4gR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3JlYXRlKFdlYktpdDo6
V2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsLCBQYXNzT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0Q+IHdlYkNvbnRleHQpCiB7Ci0gICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQz
RDo6QXR0cmlidXRlcyB3ZWJBdHRyaWJ1dGVzOwotICAgIHdlYkF0dHJpYnV0ZXMuYWxwaGEgPSBh
dHRycy5hbHBoYTsKLSAgICB3ZWJBdHRyaWJ1dGVzLmRlcHRoID0gYXR0cnMuZGVwdGg7Ci0gICAg
d2ViQXR0cmlidXRlcy5zdGVuY2lsID0gYXR0cnMuc3RlbmNpbDsKLSAgICB3ZWJBdHRyaWJ1dGVz
LmFudGlhbGlhcyA9IGF0dHJzLmFudGlhbGlhczsKLSAgICB3ZWJBdHRyaWJ1dGVzLnByZW11bHRp
cGxpZWRBbHBoYSA9IGF0dHJzLnByZW11bHRpcGxpZWRBbHBoYTsKLSAgICB3ZWJBdHRyaWJ1dGVz
LmNhblJlY292ZXJGcm9tQ29udGV4dExvc3MgPSBhdHRycy5jYW5SZWNvdmVyRnJvbUNvbnRleHRM
b3NzOwotICAgIHdlYkF0dHJpYnV0ZXMubm9FeHRlbnNpb25zID0gYXR0cnMubm9FeHRlbnNpb25z
OwotICAgIHdlYkF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMgPSBhdHRycy5zaGFyZVJlc291cmNl
czsKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gd2ViQ29udGV4dCA9
IGFkb3B0UHRyKFdlYktpdDo6d2ViS2l0Q2xpZW50KCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dDNE
KCkpOwotICAgIGlmICghd2ViQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
Q2hyb21lKiBjaHJvbWUgPSBzdGF0aWNfY2FzdDxDaHJvbWUqPihob3N0V2luZG93KTsKLSAgICBt
X3dlYlZpZXdJbXBsID0gY2hyb21lID8gc3RhdGljX2Nhc3Q8V2ViS2l0OjpXZWJWaWV3SW1wbCo+
KGNocm9tZS0+Y2xpZW50KCktPndlYlZpZXcoKSkgOiAwOworICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCh3ZWJWaWV3SW1wbCwgd2ViQ29udGV4dCkpOwor
fQogCi0gICAgaWYgKCF3ZWJDb250ZXh0LT5pbml0aWFsaXplKHdlYkF0dHJpYnV0ZXMsIG1fd2Vi
Vmlld0ltcGwsIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIG1faW1wbCA9IHdlYkNvbnRleHQucmVsZWFzZSgpOworUGFzc1JlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3JlYXRlRnJvbVdlYkNv
bnRleHQoUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0
LCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlKQoreworICAg
IE93blB0cjxHcmFwaGljc0NvbnRleHQzREludGVybmFsPiBpbnRlcm5hbCA9IEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OmNyZWF0ZSgwLCB3ZWJDb250ZXh0KTsKKyAgICBpZiAoIWludGVybmFs
KQorICAgICAgICByZXR1cm4gMDsKIAotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
LSAgICBtX2NvbXBvc2l0aW5nTGF5ZXIgPSBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsK
LSNlbmRpZgotICAgIHJldHVybiB0cnVlOworICAgIGJvb2wgcmVuZGVyRGlyZWN0bHlUb0hvc3RX
aW5kb3cgPSByZW5kZXJTdHlsZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlU
b0hvc3RXaW5kb3c7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiByZXN1bHQgPSBhZG9w
dFJlZihuZXcgR3JhcGhpY3NDb250ZXh0M0QoYXR0cnMsIGhvc3RXaW5kb3csIHJlbmRlckRpcmVj
dGx5VG9Ib3N0V2luZG93KSk7CisgICAgcmVzdWx0LT5tX2ludGVybmFsID0gaW50ZXJuYWwucmVs
ZWFzZSgpOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCiBXZWJLaXQ6OldlYkdy
YXBoaWNzQ29udGV4dDNEKiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpleHRyYWN0V2ViR3Jh
cGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCkBAIC05NzgsMTMgKzk3
MSwyOCBAQCBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKCkKIAogUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlKQogewotICAgIE93blB0cjxH
cmFwaGljc0NvbnRleHQzREludGVybmFsPiBpbnRlcm5hbCA9IGFkb3B0UHRyKG5ldyBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsKCkpOwotICAgIGlmICghaW50ZXJuYWwtPmluaXRpYWxpemUoYXR0
cnMsIGhvc3RXaW5kb3csIHJlbmRlclN0eWxlID09IFJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93
KSkgeworICAgIGJvb2wgcmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cgPSByZW5kZXJTdHlsZSA9
PSBSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdzsKKworICAgIFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0Q6OkF0dHJpYnV0ZXMgd2ViQXR0cmlidXRlczsKKyAgICB3ZWJBdHRyaWJ1dGVzLmFs
cGhhID0gYXR0cnMuYWxwaGE7CisgICAgd2ViQXR0cmlidXRlcy5kZXB0aCA9IGF0dHJzLmRlcHRo
OworICAgIHdlYkF0dHJpYnV0ZXMuc3RlbmNpbCA9IGF0dHJzLnN0ZW5jaWw7CisgICAgd2ViQXR0
cmlidXRlcy5hbnRpYWxpYXMgPSBhdHRycy5hbnRpYWxpYXM7CisgICAgd2ViQXR0cmlidXRlcy5w
cmVtdWx0aXBsaWVkQWxwaGEgPSBhdHRycy5wcmVtdWx0aXBsaWVkQWxwaGE7CisgICAgd2ViQXR0
cmlidXRlcy5jYW5SZWNvdmVyRnJvbUNvbnRleHRMb3NzID0gYXR0cnMuY2FuUmVjb3ZlckZyb21D
b250ZXh0TG9zczsKKyAgICB3ZWJBdHRyaWJ1dGVzLm5vRXh0ZW5zaW9ucyA9IGF0dHJzLm5vRXh0
ZW5zaW9uczsKKyAgICB3ZWJBdHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzID0gYXR0cnMuc2hhcmVS
ZXNvdXJjZXM7CisgICAgT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+IHdlYkNv
bnRleHQgPSBhZG9wdFB0cihXZWJLaXQ6OndlYktpdENsaWVudCgpLT5jcmVhdGVHcmFwaGljc0Nv
bnRleHQzRCgpKTsKKyAgICBpZiAoIXdlYkNvbnRleHQpCiAgICAgICAgIHJldHVybiAwOwotICAg
IH0KLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IHJlc3VsdCA9IGFkb3B0UmVmKG5ldyBH
cmFwaGljc0NvbnRleHQzRChhdHRycywgaG9zdFdpbmRvdywgcmVuZGVyU3R5bGUgPT0gUmVuZGVy
RGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsKLSAgICByZXN1bHQtPm1faW50ZXJuYWwgPSBpbnRlcm5h
bC5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisKKyAgICBDaHJvbWUq
IGNocm9tZSA9IHN0YXRpY19jYXN0PENocm9tZSo+KGhvc3RXaW5kb3cpOworICAgIFdlYktpdDo6
V2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gY2hyb21lID8gc3RhdGljX2Nhc3Q8V2ViS2l0OjpX
ZWJWaWV3SW1wbCo+KGNocm9tZS0+Y2xpZW50KCktPndlYlZpZXcoKSkgOiAwOworCisgICAgaWYg
KCF3ZWJDb250ZXh0LT5pbml0aWFsaXplKHdlYkF0dHJpYnV0ZXMsIHdlYlZpZXdJbXBsLCByZW5k
ZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJu
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZUZyb21XZWJDb250ZXh0KHdlYkNvbnRl
eHQucmVsZWFzZSgpLCBhdHRycywgaG9zdFdpbmRvdywgcmVuZGVyU3R5bGUpOwogfQogCiBQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDNEKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaAppbmRleCA5Yzk2ODg3MzlhYjg5MTBlY2JkZDI0
ZWE2YjkxYTNmYTI3Yjc0YWVkLi43OGRlMWNkM2RiNTNlYjAxYzRlM2JlMWQyZmY4YmFkNzA5NTVl
OGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRl
eHQzREludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbC5oCkBAIC01NSwxMSArNTUsMTAgQEAgY2xhc3MgU3dhcEJ1ZmZlcnND
b21wbGV0ZUNhbGxiYWNrQWRhcHRlcjsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bCB7CiBwdWJsaWM6Ci0gICAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOworICAgIHN0YXRp
YyBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw+IGNyZWF0ZShXZWJLaXQ6Oldl
YlZpZXdJbXBsKiwgUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUZyb21XZWJDb250
ZXh0KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4sIEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRl
clN0eWxlKTsKICAgICB+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOwogCi0gICAgYm9vbCBp
bml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93
KiBob3N0V2luZG93LCBib29sIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKLQogICAgIC8v
IEhlbHBlciBmdW5jdGlvbiB0byBwcm92aWRlIGFjY2VzcyB0byB0aGUgbG93ZXItbGV2ZWwgV2Vi
R3JhcGhpY3NDb250ZXh0M0QsCiAgICAgLy8gd2hpY2ggaXMgbmVlZGVkIGZvciBzdWJvcmRpbmF0
ZSBjb250ZXh0cyBsaWtlIFdlYkdMJ3MgdG8gc2hhcmUgcmVzb3VyY2VzCiAgICAgLy8gd2l0aCB0
aGUgY29tcG9zaXRvcidzIGNvbnRleHQuCkBAIC0yOTAsNiArMjg5LDggQEAgcHVibGljOgogICAg
IEdDM0RlbnVtIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKIAogcHJpdmF0ZToKKyAgICBH
cmFwaGljc0NvbnRleHQzREludGVybmFsKFdlYktpdDo6V2ViVmlld0ltcGwqLCBQYXNzT3duUHRy
PFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+KTsKKwogICAgIE93blB0cjxXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEPiBtX2ltcGw7CiAgICAgT3duUHRyPEV4dGVuc2lvbnMzRENocm9t
aXVtPiBtX2V4dGVuc2lvbnM7CiAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dExvc3RDYWxsYmFj
a0FkYXB0ZXI+IG1fY29udGV4dExvc3RDYWxsYmFja0FkYXB0ZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tHcmFwaGljc0NvbnRleHQzRFRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrR3JhcGhpY3NDb250ZXh0M0RUZXN0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNmFmMDhiNDM0OWNiOTQyNTc3NzYyMTU3MDVhMTA4Yzg4Mzg5NTk0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrR3JhcGhp
Y3NDb250ZXh0M0RUZXN0LmNwcApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKworI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaCIKKyNpbmNsdWRlICJNb2NrV2ViR3JhcGhpY3NDb250
ZXh0M0QuaCIKKworI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwordXNpbmcgbmFtZXNwYWNlIHRlc3Rpbmc7CisKK2NsYXNzIEZyYW1lQ291bnRpbmdDb250ZXh0
IDogcHVibGljIE1vY2tXZWJHcmFwaGljc0NvbnRleHQzRCB7CitwdWJsaWM6CisgICAgRnJhbWVD
b3VudGluZ0NvbnRleHQoKSA6IG1fZnJhbWUoMCkgeyB9CisKKyAgICAvLyBUaGlzIG1ldGhvZCB3
b3VsZCBub3JtYWxseSBkbyBhIGdsU3dhcEJ1ZmZlcnMgdW5kZXIgdGhlIGhvb2QuCisgICAgdmly
dHVhbCB2b2lkIHByZXBhcmVUZXh0dXJlKCkgeyBtX2ZyYW1lKys7IH0KKworICAgIGludCBmcmFt
ZUNvdW50KCkgeyByZXR1cm4gbV9mcmFtZTsgfQorCitwcml2YXRlOgorICAgIGludCBtX2ZyYW1l
OworfTsKKworVEVTVChNb2NrR3JhcGhpY3NDb250ZXh0M0RUZXN0LCBDYW5PdmVycmlkZU1hbnVh
bGx5KQoreworICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOworICAgIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmNyZWF0ZUZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGcmFtZUNvdW50aW5nQ29udGV4
dCgpKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdp
bmRvdyk7CisgICAgRnJhbWVDb3VudGluZ0NvbnRleHQmIG1vY2tDb250ZXh0ID0gKnN0YXRpY19j
YXN0PEZyYW1lQ291bnRpbmdDb250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZXh0
cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKGNvbnRleHQuZ2V0KCkpKTsKKworICAgIGNvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykg
eworICAgICAgICBjb250ZXh0LT5jbGVhckNvbG9yKDAsIDAsIDAsIDEpOworICAgICAgICBjb250
ZXh0LT5wcmVwYXJlVGV4dHVyZSgpOworICAgIH0KKyAgICBjb250ZXh0LT5maW5pc2goKTsKKwor
ICAgIEVYUEVDVF9FUSgxMCwgbW9ja0NvbnRleHQuZnJhbWVDb3VudCgpKTsKK30KKworCitjbGFz
cyBHTW9ja0NvbnRleHQgOiBwdWJsaWMgTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEIHsKK3B1Ymxp
YzoKKyAgICBNT0NLX01FVEhPRDAoZ2V0RXJyb3IsIFdHQzNEZW51bSgpKTsKK307CisKK1RFU1Qo
TW9ja0dyYXBoaWNzQ29udGV4dDNEVGVzdCwgQ2FuVXNlR01vY2spCit7CisgICAgR3JhcGhpY3ND
b250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3JlYXRlRnJvbVdlYkNvbnRl
eHQoYWRvcHRQdHIobmV3IEdNb2NrQ29udGV4dCgpKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CisgICAgR01vY2tDb250ZXh0JiBtb2Nr
Q29udGV4dCA9ICpzdGF0aWNfY2FzdDxHTW9ja0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoY29udGV4dC5nZXQoKSkpOworCisg
ICAgRVhQRUNUX0NBTEwobW9ja0NvbnRleHQsIGdldEVycm9yKCkpCisgICAgICAgICAgICAuV2ls
bFJlcGVhdGVkbHkoUmV0dXJuKDMxNCkpOworCisgICAgLy8gSXQncyBPSyB0byBjYWxsIG1ldGhv
ZHMgR01vY2sgZG9lc24ndCBrbm93IGFib3V0LgorICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpOworCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgbW9ja2VkIG1ldGhvZCBpcyByZXR1cm5p
bmcgYXMgaW50ZW5kZWQuCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKQorICAgICAg
ICBFWFBFQ1RfRVEoKGludCljb250ZXh0LT5nZXRFcnJvcigpLCAzMTQpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrV2ViR3JhcGhpY3NDb250ZXh0M0RU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja1dlYkdyYXBoaWNzQ29u
dGV4dDNEVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4OGQ0YTUyM2Vh
M2E0NTgxYmI3OTMzNjc3MDNjM2MxOTkzMjkzOWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrV2Vi
R3JhcGhpY3NDb250ZXh0M0RUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiTW9ja1dlYkdyYXBoaWNz
Q29udGV4dDNELmgiCi0KLSNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci11c2luZyBuYW1lc3BhY2UgdGVz
dGluZzsKLQotVEVTVChNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0RUZXN0LCBCYXNpY01vY2tEb2Vz
Tm90aGluZykKLXsKLSAgICBNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QgY29udGV4dDsKLSAgICBF
WFBFQ1RfRkFMU0UoY29udGV4dC5tYWtlQ29udGV4dEN1cnJlbnQoKSk7Ci19Ci0KLWNsYXNzIEZy
YW1lQ291bnRpbmdDb250ZXh0IDogcHVibGljIE1vY2tXZWJHcmFwaGljc0NvbnRleHQzRCB7Ci1w
dWJsaWM6Ci0gICAgRnJhbWVDb3VudGluZ0NvbnRleHQoKSA6IG1fZnJhbWUoMCkgeyB9Ci0KLSAg
ICAvLyBUaGlzIG1ldGhvZCB3b3VsZCBub3JtYWxseSBkbyBhIGdsU3dhcEJ1ZmZlcnMgdW5kZXIg
dGhlIGhvb2QuCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUZXh0dXJlKCkgeyBtX2ZyYW1lKys7
IH0KLQotICAgIGludCBmcmFtZUNvdW50KCkgeyByZXR1cm4gbV9mcmFtZTsgfQotCi1wcml2YXRl
OgotICAgIGludCBtX2ZyYW1lOwotfTsKLQotVEVTVChNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0RU
ZXN0LCBDYW5PdmVycmlkZU1hbnVhbGx5KQotewotICAgIEZyYW1lQ291bnRpbmdDb250ZXh0IGNv
bnRleHQ7Ci0KLSAgICBjb250ZXh0Lm1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgMTA7IGkrKykgewotICAgICAgICBjb250ZXh0LmNsZWFyQ29sb3IoMCwgMCwg
MCwgMSk7Ci0gICAgICAgIGNvbnRleHQucHJlcGFyZVRleHR1cmUoKTsKLSAgICB9Ci0gICAgY29u
dGV4dC5maW5pc2goKTsKLQotICAgIEVYUEVDVF9FUSgxMCwgY29udGV4dC5mcmFtZUNvdW50KCkp
OwotfQotCi1jbGFzcyBHTW9ja0NvbnRleHQgOiBwdWJsaWMgTW9ja1dlYkdyYXBoaWNzQ29udGV4
dDNEIHsKLXB1YmxpYzoKLSAgICBNT0NLX01FVEhPRDAod2lkdGgsIGludCgpKTsKLSAgICBNT0NL
X01FVEhPRDAoaGVpZ2h0LCBpbnQoKSk7Ci0gICAgTU9DS19NRVRIT0QxKHN5bnRoZXNpemVHTEVy
cm9yLCB2b2lkKFdHQzNEZW51bSBlcnJvcikpOwotICAgIE1PQ0tfTUVUSE9EMChnZXRFcnJvciwg
V0dDM0RlbnVtKCkpOwotfTsKLQotVEVTVChNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0RUZXN0LCBD
YW5Vc2VHTW9jaykKLXsKLSAgICBHTW9ja0NvbnRleHQgY29udGV4dDsKLQotICAgIEVYUEVDVF9D
QUxMKGNvbnRleHQsIHdpZHRoKCkpCi0gICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oNTEy
KSk7Ci0KLSAgICBFWFBFQ1RfQ0FMTChjb250ZXh0LCBoZWlnaHQoKSkKLSAgICAgICAgLldpbGxS
ZXBlYXRlZGx5KFJldHVybigzODQpKTsKLQotICAgIEVYUEVDVF9DQUxMKGNvbnRleHQsIHN5bnRo
ZXNpemVHTEVycm9yKF8pKSAvLyBBbnkgcGFyYW1ldGVyIGFjY2VwdGVkCi0gICAgICAgIC5UaW1l
cyhFeGFjdGx5KDEwKSk7Ci0KLSAgICAvLyBObyBleHBlY3RhdGlvbiBmb3IgZ2V0RXJyb3IoKSwg
c28gY2FsbGluZyB0aGF0IHdvdWxkIG1ha2Ugb3VyIHRlc3QgZmFpbC4KLQotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgMTA7IGkrKykgewotICAgICAgICBjb250ZXh0LnN5bnRoZXNpemVHTEVycm9y
KGkpOwotICAgICAgICBFWFBFQ1RfRVEoNTEyLCBjb250ZXh0LndpZHRoKCkpOwotICAgICAgICBF
WFBFQ1RfRVEoMzg0LCBjb250ZXh0LmhlaWdodCgpKTsKLQotICAgICAgICAvLyBJdCdzIE9LIHRv
IGNhbGwgbWV0aG9kcyBHTW9jayBkb2Vzbid0IGtub3cgYWJvdXQuCi0gICAgICAgIEVYUEVDVF9G
QUxTRShjb250ZXh0Lm1ha2VDb250ZXh0Q3VycmVudCgpKTsKLSAgICB9Ci19Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105668</attachid>
            <date>2011-08-30 12:28:48 -0700</date>
            <delta_ts>2011-08-30 13:42:24 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-67179-20110830122847.patch</filename>
            <type>text/plain</type>
            <size>16281</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQwOTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
OWQyNjk0ODU2NDE1NmRlNDFhNmI1NTBlOWI1MjNhYTQzNzE5MmZjNS4uMTAxMTIwNWU2Njc3ZTc0
ZTQ2MjUxZDczYTE1YWQ3YmYxNjhjNWIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMyBAQAorMjAxMS0wOC0yOSAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW2Nocm9taXVtXSBBbGxvdyBHcmFwaGljc0NvbnRleHRzIHRvIGJlIGNyZWF0
ZWQgZnJvbSBNb2NrV2ViR3JhcGhpY3NDb250ZXh0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjcxNzkKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJ1c3NlbGwuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBzcmMvR3Jh
cGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjcmVhdGVGcm9tV2ViQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKToKKyAgICAgICAgKiBz
cmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oOgorICAgICAgICAqIHRlc3RzL01vY2tHcmFw
aGljc0NvbnRleHQzRFRlc3QuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9Nb2NrV2ViR3JhcGhpY3NDb250ZXh0M0RUZXN0LmNwcC4KKyAgICAgICAgKEZyYW1l
Q291bnRpbmdDb250ZXh0OjpGcmFtZUNvdW50aW5nQ29udGV4dCk6CisgICAgICAgIChGcmFtZUNv
dW50aW5nQ29udGV4dDo6cHJlcGFyZVRleHR1cmUpOgorICAgICAgICAoRnJhbWVDb3VudGluZ0Nv
bnRleHQ6OmZyYW1lQ291bnQpOgorICAgICAgICAoVEVTVCk6CisKIDIwMTEtMDgtMzAgIFRvbnkg
Q2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBGaXggY2hyb21pdW0gY29tcGls
ZSB3aGVuIHVzaW5nIGNsYW5nLiAgQW5vdGhlciBjb21waWxlIGVycm9yIGR1ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggYmVhYTA4MjBhMDJiZTg0MjUxMjEyNTkwMjhkZTk4ZDE2
OTNhMzI4ZS4uNGNhMGU3NmE4ZmVmODNjNWQ0NTdlYWEzMzJkZjZmZDI3ZmYwMGRjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC02Myw4ICs2Myw5IEBACiAgICAgICAgICAgICAn
dGVzdHMvSW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0
cy9LZXlib2FyZFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9LVVJMVGVzdC5jcHAnLAor
ICAgICAgICAgICAgJ3Rlc3RzL01vY2tHcmFwaGljc0NvbnRleHQzRC5oJywKKyAgICAgICAgICAg
ICd0ZXN0cy9Nb2NrR3JhcGhpY3NDb250ZXh0M0RUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmgnLAotICAgICAgICAgICAgJ3Rlc3RzL01vY2tX
ZWJHcmFwaGljc0NvbnRleHQzRFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9QT0RBcmVu
YVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9QT0RJbnRlcnZhbFRyZWVUZXN0LmNwcCcs
CiAgICAgICAgICAgICAndGVzdHMvUE9EUmVkQmxhY2tUcmVlVGVzdC5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVt
LmNwcAppbmRleCBhYjIyODM2ZjQ3YWVlNDRiZTUxYWEyNjY4OWRjODQ1NWM0YWI4NDQwLi40YTc1
NjFlMTdmMDMwMThiZTE1NjZkZGEwNDQ1NDUwMzRjNDIwNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcApA
QCAtODMsOCArODMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8v
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZQogCi1HcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Okdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpCi0gICAgOiBtX3dlYlZpZXdJbXBsKDApCitHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShXZWJLaXQ6OldlYlZp
ZXdJbXBsKiB3ZWJWaWV3SW1wbCwgUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4
dDNEPiB3ZWJDb250ZXh0KQorICAgIDogbV9pbXBsKHdlYkNvbnRleHQpCisgICAgLCBtX3dlYlZp
ZXdJbXBsKHdlYlZpZXdJbXBsKQogICAgICwgbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lv
bnMoZmFsc2UpCiAgICAgLCBtX2xheWVyQ29tcG9zaXRlZChmYWxzZSkKICAgICAsIG1fcmVzb3Vy
Y2VTYWZldHkoUmVzb3VyY2VTYWZldHlVbmtub3duKQpAQCAtOTYsNiArOTcsOSBAQCBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpCiAjZXJyb3IgTXVz
dCBwb3J0IHRvIHlvdXIgcGxhdGZvcm0KICNlbmRpZgogeworI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKyAgICBtX2NvbXBvc2l0aW5nTGF5ZXIgPSBXZWJHTExheWVyQ2hyb21pdW06
OmNyZWF0ZSgwKTsKKyNlbmRpZgogfQogCiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6On5HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUoKQpAQCAtMTA4LDMyICsxMTIsMjIgQEAgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjp+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKCkKICNlbmRpZgogfQogCi1i
b29sIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6aW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHQz
RDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgYm9vbCByZW5kZXJE
aXJlY3RseVRvSG9zdFdpbmRvdykKLXsKLSAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIHdlYkF0dHJpYnV0ZXM7Ci0gICAgd2ViQXR0cmlidXRlcy5hbHBoYSA9IGF0
dHJzLmFscGhhOwotICAgIHdlYkF0dHJpYnV0ZXMuZGVwdGggPSBhdHRycy5kZXB0aDsKLSAgICB3
ZWJBdHRyaWJ1dGVzLnN0ZW5jaWwgPSBhdHRycy5zdGVuY2lsOwotICAgIHdlYkF0dHJpYnV0ZXMu
YW50aWFsaWFzID0gYXR0cnMuYW50aWFsaWFzOwotICAgIHdlYkF0dHJpYnV0ZXMucHJlbXVsdGlw
bGllZEFscGhhID0gYXR0cnMucHJlbXVsdGlwbGllZEFscGhhOwotICAgIHdlYkF0dHJpYnV0ZXMu
Y2FuUmVjb3ZlckZyb21Db250ZXh0TG9zcyA9IGF0dHJzLmNhblJlY292ZXJGcm9tQ29udGV4dExv
c3M7Ci0gICAgd2ViQXR0cmlidXRlcy5ub0V4dGVuc2lvbnMgPSBhdHRycy5ub0V4dGVuc2lvbnM7
Ci0gICAgd2ViQXR0cmlidXRlcy5zaGFyZVJlc291cmNlcyA9IGF0dHJzLnNoYXJlUmVzb3VyY2Vz
OwotICAgIE93blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0ID0g
YWRvcHRQdHIoV2ViS2l0Ojp3ZWJLaXRDbGllbnQoKS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0M0Qo
KSk7Ci0gICAgaWYgKCF3ZWJDb250ZXh0KQotICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBD
aHJvbWUqIGNocm9tZSA9IHN0YXRpY19jYXN0PENocm9tZSo+KGhvc3RXaW5kb3cpOwotICAgIG1f
d2ViVmlld0ltcGwgPSBjaHJvbWUgPyBzdGF0aWNfY2FzdDxXZWJLaXQ6OldlYlZpZXdJbXBsKj4o
Y2hyb21lLT5jbGllbnQoKS0+d2ViVmlldygpKSA6IDA7CitQYXNzT3duUHRyPEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZT4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGUoV2ViS2l0OjpX
ZWJWaWV3SW1wbCogd2ViVmlld0ltcGwsIFBhc3NPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRD4gd2ViQ29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZSh3ZWJWaWV3SW1wbCwgd2ViQ29udGV4dCkpOworfQogCi0gICAgaWYg
KCF3ZWJDb250ZXh0LT5pbml0aWFsaXplKHdlYkF0dHJpYnV0ZXMsIG1fd2ViVmlld0ltcGwsIHJl
bmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1f
aW1wbCA9IHdlYkNvbnRleHQucmVsZWFzZSgpOworUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2Vi
Q29udGV4dChQYXNzT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+IHdlYkNvbnRl
eHQsIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0
V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCit7Cisg
ICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4gcHJpdiA9IEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Y3JlYXRlKDAsIHdlYkNvbnRleHQpOworICAgIGlmICghcHJpdikKKyAgICAg
ICAgcmV0dXJuIDA7CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgbV9j
b21wb3NpdGluZ0xheWVyID0gV2ViR0xMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0jZW5kaWYK
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICBib29sIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93ID0g
cmVuZGVyU3R5bGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2lu
ZG93OworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gcmVzdWx0ID0gYWRvcHRSZWYobmV3
IEdyYXBoaWNzQ29udGV4dDNEKGF0dHJzLCBob3N0V2luZG93LCByZW5kZXJEaXJlY3RseVRvSG9z
dFdpbmRvdykpOworICAgIHJlc3VsdC0+bV9wcml2YXRlID0gcHJpdi5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0
M0QqIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNE
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQpAQCAtOTc4LDEzICs5NzIsMjggQEAgR3JhcGhp
Y3NDb250ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCgpCiAKIFBhc3NSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKIHsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlPiBwcml2ID0gYWRvcHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgp
KTsKLSAgICBpZiAoIXByaXYtPmluaXRpYWxpemUoYXR0cnMsIGhvc3RXaW5kb3csIHJlbmRlclN0
eWxlID09IFJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSkKKyAgICBib29sIHJlbmRlckRpcmVj
dGx5VG9Ib3N0V2luZG93ID0gcmVuZGVyU3R5bGUgPT0gUmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5k
b3c7CisKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIHdlYkF0
dHJpYnV0ZXM7CisgICAgd2ViQXR0cmlidXRlcy5hbHBoYSA9IGF0dHJzLmFscGhhOworICAgIHdl
YkF0dHJpYnV0ZXMuZGVwdGggPSBhdHRycy5kZXB0aDsKKyAgICB3ZWJBdHRyaWJ1dGVzLnN0ZW5j
aWwgPSBhdHRycy5zdGVuY2lsOworICAgIHdlYkF0dHJpYnV0ZXMuYW50aWFsaWFzID0gYXR0cnMu
YW50aWFsaWFzOworICAgIHdlYkF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhID0gYXR0cnMu
cHJlbXVsdGlwbGllZEFscGhhOworICAgIHdlYkF0dHJpYnV0ZXMuY2FuUmVjb3ZlckZyb21Db250
ZXh0TG9zcyA9IGF0dHJzLmNhblJlY292ZXJGcm9tQ29udGV4dExvc3M7CisgICAgd2ViQXR0cmli
dXRlcy5ub0V4dGVuc2lvbnMgPSBhdHRycy5ub0V4dGVuc2lvbnM7CisgICAgd2ViQXR0cmlidXRl
cy5zaGFyZVJlc291cmNlcyA9IGF0dHJzLnNoYXJlUmVzb3VyY2VzOworICAgIE93blB0cjxXZWJL
aXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0ID0gYWRvcHRQdHIoV2ViS2l0Ojp3
ZWJLaXRDbGllbnQoKS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0M0QoKSk7CisgICAgaWYgKCF3ZWJD
b250ZXh0KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gcmVzdWx0ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dDNEKGF0dHJzLCBob3N0V2lu
ZG93LCByZW5kZXJTdHlsZSA9PSBSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpOwotICAgIHJl
c3VsdC0+bV9wcml2YXRlID0gcHJpdi5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxl
YXNlKCk7CisgICAgQ2hyb21lKiBjaHJvbWUgPSBzdGF0aWNfY2FzdDxDaHJvbWUqPihob3N0V2lu
ZG93KTsKKyAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IGNocm9tZSA/IHN0
YXRpY19jYXN0PFdlYktpdDo6V2ViVmlld0ltcGwqPihjaHJvbWUtPmNsaWVudCgpLT53ZWJWaWV3
KCkpIDogMDsKKworICAgIGlmICghd2ViQ29udGV4dC0+aW5pdGlhbGl6ZSh3ZWJBdHRyaWJ1dGVz
LCB3ZWJWaWV3SW1wbCwgcmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBo
aWNzQ29udGV4dEZyb21XZWJDb250ZXh0KHdlYkNvbnRleHQucmVsZWFzZSgpLCBhdHRycywgaG9z
dFdpbmRvdywgcmVuZGVyU3R5bGUpOwogfQogCiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdy
YXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
LmgKaW5kZXggNjBhODIyM2FiYzRlOWQ2OTkwYTQ3MTdhZTY2MWRiYWM2NjI3ZWM4OC4uOGI4ODk3
MmMyMDYyZWU3MGU0MWZhNDNhMTg5NTBiNmZlYmI1MWU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTU1LDcg
KzU1LDExIEBAIGNsYXNzIFN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0FkYXB0ZXI7CiAKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlKCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlPiBjcmVhdGUoV2ViS2l0OjpXZWJWaWV3SW1wbCosIFBhc3NPd25QdHI8V2ViS2l0OjpX
ZWJHcmFwaGljc0NvbnRleHQzRD4pOworCisgICAgLy8gVXNlZCBpbiB0ZXN0cyB0byBjcmVhdGUg
YSBHcmFwaGljc0NvbnRleHQzRCBmcm9tIGEgbW9ja2VkIFdlYkdyYXBoaWNzQ29udGV4dDNELgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVHcmFwaGljc0Nv
bnRleHRGcm9tV2ViQ29udGV4dChQYXNzT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0
M0Q+LCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJTdHlsZSk7CisKICAgICB+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
KCk7CiAKICAgICBib29sIGluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMs
IEhvc3RXaW5kb3cqLCBib29sIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKQEAgLTI5MCw2
ICsyOTQsOCBAQCBwdWJsaWM6CiAgICAgR0MzRGVudW0gZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS
QigpOwogCiBwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShXZWJLaXQ6Oldl
YlZpZXdJbXBsKiwgUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPik7CisK
ICAgICBPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gbV9pbXBsOwogICAgIE93
blB0cjxFeHRlbnNpb25zM0RDaHJvbWl1bT4gbV9leHRlbnNpb25zOwogICAgIE93blB0cjxHcmFw
aGljc0NvbnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyPiBtX2NvbnRleHRMb3N0Q2FsbGJhY2tBZGFw
dGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrR3JhcGhp
Y3NDb250ZXh0M0RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0dy
YXBoaWNzQ29udGV4dDNEVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQzNjUzNzk1ODdmNDhkNzc2MTA3
OWM2MGQ2MTk1NDY1ZTBhYjQ4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvTW9ja0dyYXBoaWNzQ29udGV4dDNEVGVzdC5jcHAKQEAgLTAsMCArMSw5MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKKyNpbmNsdWRl
ICJNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKKworI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+
CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIHRlc3Rpbmc7CisKK2NsYXNz
IEZyYW1lQ291bnRpbmdDb250ZXh0IDogcHVibGljIE1vY2tXZWJHcmFwaGljc0NvbnRleHQzRCB7
CitwdWJsaWM6CisgICAgRnJhbWVDb3VudGluZ0NvbnRleHQoKSA6IG1fZnJhbWUoMCkgeyB9CisK
KyAgICAvLyBUaGlzIG1ldGhvZCB3b3VsZCBub3JtYWxseSBkbyBhIGdsU3dhcEJ1ZmZlcnMgdW5k
ZXIgdGhlIGhvb2QuCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUZXh0dXJlKCkgeyBtX2ZyYW1l
Kys7IH0KKworICAgIGludCBmcmFtZUNvdW50KCkgeyByZXR1cm4gbV9mcmFtZTsgfQorCitwcml2
YXRlOgorICAgIGludCBtX2ZyYW1lOworfTsKKworVEVTVChNb2NrR3JhcGhpY3NDb250ZXh0M0RU
ZXN0LCBDYW5PdmVycmlkZU1hbnVhbGx5KQoreworICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aWJ1dGVzIGF0dHJzOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRl
eHQoYWRvcHRQdHIobmV3IEZyYW1lQ291bnRpbmdDb250ZXh0KCkpLCBhdHRycywgMCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKKyAgICBGcmFtZUNvdW50
aW5nQ29udGV4dCYgbW9ja0NvbnRleHQgPSAqc3RhdGljX2Nhc3Q8RnJhbWVDb3VudGluZ0NvbnRl
eHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQz
RChjb250ZXh0LmdldCgpKSk7CisKKyAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICAgICAgY29udGV4dC0+Y2xl
YXJDb2xvcigwLCAwLCAwLCAxKTsKKyAgICAgICAgY29udGV4dC0+cHJlcGFyZVRleHR1cmUoKTsK
KyAgICB9CisgICAgY29udGV4dC0+ZmluaXNoKCk7CisKKyAgICBFWFBFQ1RfRVEoMTAsIG1vY2tD
b250ZXh0LmZyYW1lQ291bnQoKSk7Cit9CisKKworY2xhc3MgR01vY2tDb250ZXh0IDogcHVibGlj
IE1vY2tXZWJHcmFwaGljc0NvbnRleHQzRCB7CitwdWJsaWM6CisgICAgTU9DS19NRVRIT0QwKGdl
dEVycm9yLCBXR0MzRGVudW0oKSk7Cit9OworCitURVNUKE1vY2tHcmFwaGljc0NvbnRleHQzRFRl
c3QsIENhblVzZUdNb2NrKQoreworICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0
dHJzOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQ
dHIobmV3IEdNb2NrQ29udGV4dCgpKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5k
ZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CisgICAgR01vY2tDb250ZXh0JiBtb2NrQ29udGV4dCA9
ICpzdGF0aWNfY2FzdDxHTW9ja0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4
dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChjb250ZXh0LmdldCgpKSk7CisKKyAgICBFWFBFQ1Rf
Q0FMTChtb2NrQ29udGV4dCwgZ2V0RXJyb3IoKSkKKyAgICAgICAgICAgIC5XaWxsUmVwZWF0ZWRs
eShSZXR1cm4oMzE0KSk7CisKKyAgICAvLyBJdCdzIE9LIHRvIGNhbGwgbWV0aG9kcyBHTW9jayBk
b2Vzbid0IGtub3cgYWJvdXQuCisgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisK
KyAgICAvLyBDaGVjayB0aGF0IHRoZSBtb2NrZWQgbWV0aG9kIGlzIHJldHVybmluZyBhcyBpbnRl
bmRlZC4KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspCisgICAgICAgIEVYUEVDVF9F
USgoaW50KWNvbnRleHQtPmdldEVycm9yKCksIDMxNCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tXZWJHcmFwaGljc0NvbnRleHQzRFRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrV2ViR3JhcGhpY3NDb250ZXh0M0RUZXN0
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTg4ZDRhNTIzZWEzYTQ1ODFiYjc5
MzM2NzcwM2MzYzE5OTMyOTM5ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tXZWJHcmFwaGljc0Nv
bnRleHQzRFRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aCIKLQotI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
LQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLXVzaW5nIG5hbWVzcGFjZSB0ZXN0aW5nOwotCi1U
RVNUKE1vY2tXZWJHcmFwaGljc0NvbnRleHQzRFRlc3QsIEJhc2ljTW9ja0RvZXNOb3RoaW5nKQot
ewotICAgIE1vY2tXZWJHcmFwaGljc0NvbnRleHQzRCBjb250ZXh0OwotICAgIEVYUEVDVF9GQUxT
RShjb250ZXh0Lm1ha2VDb250ZXh0Q3VycmVudCgpKTsKLX0KLQotY2xhc3MgRnJhbWVDb3VudGlu
Z0NvbnRleHQgOiBwdWJsaWMgTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEIHsKLXB1YmxpYzoKLSAg
ICBGcmFtZUNvdW50aW5nQ29udGV4dCgpIDogbV9mcmFtZSgwKSB7IH0KLQotICAgIC8vIFRoaXMg
bWV0aG9kIHdvdWxkIG5vcm1hbGx5IGRvIGEgZ2xTd2FwQnVmZmVycyB1bmRlciB0aGUgaG9vZC4K
LSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRleHR1cmUoKSB7IG1fZnJhbWUrKzsgfQotCi0gICAg
aW50IGZyYW1lQ291bnQoKSB7IHJldHVybiBtX2ZyYW1lOyB9Ci0KLXByaXZhdGU6Ci0gICAgaW50
IG1fZnJhbWU7Ci19OwotCi1URVNUKE1vY2tXZWJHcmFwaGljc0NvbnRleHQzRFRlc3QsIENhbk92
ZXJyaWRlTWFudWFsbHkpCi17Ci0gICAgRnJhbWVDb3VudGluZ0NvbnRleHQgY29udGV4dDsKLQot
ICAgIGNvbnRleHQubWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkg
PCAxMDsgaSsrKSB7Ci0gICAgICAgIGNvbnRleHQuY2xlYXJDb2xvcigwLCAwLCAwLCAxKTsKLSAg
ICAgICAgY29udGV4dC5wcmVwYXJlVGV4dHVyZSgpOwotICAgIH0KLSAgICBjb250ZXh0LmZpbmlz
aCgpOwotCi0gICAgRVhQRUNUX0VRKDEwLCBjb250ZXh0LmZyYW1lQ291bnQoKSk7Ci19Ci0KLWNs
YXNzIEdNb2NrQ29udGV4dCA6IHB1YmxpYyBNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QgewotcHVi
bGljOgotICAgIE1PQ0tfTUVUSE9EMCh3aWR0aCwgaW50KCkpOwotICAgIE1PQ0tfTUVUSE9EMCho
ZWlnaHQsIGludCgpKTsKLSAgICBNT0NLX01FVEhPRDEoc3ludGhlc2l6ZUdMRXJyb3IsIHZvaWQo
V0dDM0RlbnVtIGVycm9yKSk7Ci0gICAgTU9DS19NRVRIT0QwKGdldEVycm9yLCBXR0MzRGVudW0o
KSk7Ci19OwotCi1URVNUKE1vY2tXZWJHcmFwaGljc0NvbnRleHQzRFRlc3QsIENhblVzZUdNb2Nr
KQotewotICAgIEdNb2NrQ29udGV4dCBjb250ZXh0OwotCi0gICAgRVhQRUNUX0NBTEwoY29udGV4
dCwgd2lkdGgoKSkKLSAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybig1MTIpKTsKLQotICAg
IEVYUEVDVF9DQUxMKGNvbnRleHQsIGhlaWdodCgpKQotICAgICAgICAuV2lsbFJlcGVhdGVkbHko
UmV0dXJuKDM4NCkpOwotCi0gICAgRVhQRUNUX0NBTEwoY29udGV4dCwgc3ludGhlc2l6ZUdMRXJy
b3IoXykpIC8vIEFueSBwYXJhbWV0ZXIgYWNjZXB0ZWQKLSAgICAgICAgLlRpbWVzKEV4YWN0bHko
MTApKTsKLQotICAgIC8vIE5vIGV4cGVjdGF0aW9uIGZvciBnZXRFcnJvcigpLCBzbyBjYWxsaW5n
IHRoYXQgd291bGQgbWFrZSBvdXIgdGVzdCBmYWlsLgotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkg
PCAxMDsgaSsrKSB7Ci0gICAgICAgIGNvbnRleHQuc3ludGhlc2l6ZUdMRXJyb3IoaSk7Ci0gICAg
ICAgIEVYUEVDVF9FUSg1MTIsIGNvbnRleHQud2lkdGgoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgz
ODQsIGNvbnRleHQuaGVpZ2h0KCkpOwotCi0gICAgICAgIC8vIEl0J3MgT0sgdG8gY2FsbCBtZXRo
b2RzIEdNb2NrIGRvZXNuJ3Qga25vdyBhYm91dC4KLSAgICAgICAgRVhQRUNUX0ZBTFNFKGNvbnRl
eHQubWFrZUNvbnRleHRDdXJyZW50KCkpOwotICAgIH0KLX0K
</data>

          </attachment>
      

    </bug>

</bugzilla>