<?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>67832</bug_id>
          
          <creation_ts>2011-09-08 21:01:47 -0700</creation_ts>
          <short_desc>[chromium] Add GraphicsContext3DPrivate:createGraphicsContextForAnotherThread</short_desc>
          <delta_ts>2011-09-12 12:52:49 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nat Duca">nduca</reporter>
          <assigned_to name="Nat Duca">nduca</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>husky</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>464621</commentid>
    <comment_count>0</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-09-08 21:01:47 -0700</bug_when>
    <thetext>[chromium] Add GraphicsContext3DPrivate:createGraphicsContextForAnotherThread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464633</commentid>
    <comment_count>1</comment_count>
      <attachid>106838</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-09-08 21:22:17 -0700</bug_when>
    <thetext>Created attachment 106838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464712</commentid>
    <comment_count>2</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-09-09 03:40:20 -0700</bug_when>
    <thetext>Very nice overall.

&gt; Source/WebKit/chromium/src/GraphicsContext3DPrivate.h:60
&gt; +    // Used to create a GraphicsContext3D for use on a thread. Will skip making

Super picky: this first sentence is actually less useful than the name of the method.

Maybe ditch it, but add a comment to create() to emphasise that the new context must be used on *this* thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464816</commentid>
    <comment_count>3</comment_count>
      <attachid>106877</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-09-09 08:50:55 -0700</bug_when>
    <thetext>Created attachment 106877
now with comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465157</commentid>
    <comment_count>4</comment_count>
      <attachid>106877</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-09-09 18:22:23 -0700</bug_when>
    <thetext>Comment on attachment 106877
now with comments.

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

Overall this looks good but one small thing needs cleanup before landing.

&gt; Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp:122
&gt; +PassRefPtr&lt;GraphicsContext3D&gt; GraphicsContext3DPrivate::createGraphicsContextFromWebContext(PassOwnPtr&lt;WebKit::WebGraphicsContext3D&gt; webContext, GraphicsContext3D::Attributes attrs, HostWindow* hostWindow, GraphicsContext3D::RenderStyle renderStyle, bool forUseOnAnotherThread)

WebKit style strongly discourages the use of bool arguments because they aren&apos;t self-describing at the call site. Please define a little enum in GraphicsContext3DPrivate.h like ThreadUsage { ForUseOnThisThread, ForUseOnAnotherThread } and pass that instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465160</commentid>
    <comment_count>5</comment_count>
      <attachid>106877</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-09-09 18:28:51 -0700</bug_when>
    <thetext>Comment on attachment 106877
now with comments.

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

&gt; Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp:165
&gt; +    return GraphicsContext3DPrivate::createGraphicsContextFromWebContext(webContext.release(), attrs, hostWindow, renderStyle, false);

Did you mean to pass &quot;forUseOnAnotherThread&quot; instead of &quot;false&quot; here? That would be yet another reason to use an enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465163</commentid>
    <comment_count>6</comment_count>
      <attachid>106950</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-09-09 18:38:35 -0700</bug_when>
    <thetext>Created attachment 106950
ThreadUsage enum</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465177</commentid>
    <comment_count>7</comment_count>
      <attachid>106950</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-09-09 18:56:25 -0700</bug_when>
    <thetext>Comment on attachment 106950
ThreadUsage enum

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

Thanks, looks good but does this actually compile?

&gt; Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp:1026
&gt; +    return createGraphicsContext(attrs, hostWindow, renderStyle, ForUseOnThisThread);

Does this compile or do you need to say GraphicsContext3DPrivate::ForUseOnThisThread?

&gt; Source/WebKit/chromium/tests/MockGraphicsContext3DTest.cpp:56
&gt; +    RefPtr&lt;GraphicsContext3D&gt; context = GraphicsContext3DPrivate::createGraphicsContextFromWebContext(adoptPtr(new FrameCountingContext()), attrs, 0, GraphicsContext3D::RenderDirectlyToHostWindow, false);

Does this compile?

&gt; Source/WebKit/chromium/tests/MockGraphicsContext3DTest.cpp:78
&gt; +    RefPtr&lt;GraphicsContext3D&gt; context = GraphicsContext3DPrivate::createGraphicsContextFromWebContext(adoptPtr(new GMockContext()), attrs, 0, GraphicsContext3D::RenderDirectlyToHostWindow, false);

Same question here and below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465197</commentid>
    <comment_count>8</comment_count>
      <attachid>106950</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-09 19:53:51 -0700</bug_when>
    <thetext>Comment on attachment 106950
ThreadUsage enum

Attachment 106950 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/9625903</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465245</commentid>
    <comment_count>9</comment_count>
      <attachid>106968</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-09-09 23:46:10 -0700</bug_when>
    <thetext>Created attachment 106968
Make it work, plus tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465326</commentid>
    <comment_count>10</comment_count>
      <attachid>106968</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-09-10 14:15:11 -0700</bug_when>
    <thetext>Comment on attachment 106968
Make it work, plus tests.

Fantastic. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465743</commentid>
    <comment_count>11</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-09-12 12:52:49 -0700</bug_when>
    <thetext>Committed r94971: &lt;http://trac.webkit.org/changeset/94971&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106838</attachid>
            <date>2011-09-08 21:22:17 -0700</date>
            <delta_ts>2011-09-09 08:50:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67832-20110908212216.patch</filename>
            <type>text/plain</type>
            <size>13068</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ2NzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
N2Y5NTk4MWVmN2NjOWQ0OTE3NzViZjQxYWE5ZWY3OTZlMzQwYmExOS4uNmE3OWVkYzZiNjVlN2Jl
MDViMmNiMDJkMWI2NzBlMzE0YjUxNmEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAxMS0wOS0wOCAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOmNyZWF0
ZUdyYXBoaWNzQ29udGV4dEZvckFub3RoZXJUaHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3ODMyCisKKyAgICAgICAgVGhlIGNvbXBvc2l0b3Ig
dGhyZWFkIG5lZWRzIHRvIGNyZWF0ZSBhIEdyYXBoaWNzQ29udGV4dDNEIHdpdGhvdXQKKyAgICAg
ICAgYWN0dWFsbHkgbWFraW5nIGl0IGN1cnJlbnQuIEluIHByZXZpb3VzIGF0dGVtcHRzIGF0IGRv
aW5nIHRoaXMsCisgICAgICAgIHdlIG1vZGlmaWVkIGFsbCBncmFwaGljczNEIGNyZWF0aW9uIHRv
IG5vdCBtYWtlIHRoZSBjb250ZXh0cyBjdXJyZW50LAorICAgICAgICBidXQgdGhpcyBwcm92ZSB0
byBiZSBzaG9ja2luZ2x5IGZyYWdpbGUuIFNpbmNlIHRoaXMgaXMgYSB2ZXJ5IENocm9taXVtLXNw
ZWNpZmljCisgICAgICAgIGJlaGF2aW9yLCB0aGlzIHBhdGNoIG1ha2VzIGNyZWF0aW9uRm9yQW5v
dGhlclRocmVhZCBhIG1ldGhvZCBvbiB0aGUgcHJpdmF0ZQorICAgICAgICBHcmFwaGljc0NvbnRl
eHQzRCBpbnRlcmZhY2UuIEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUgYmVoYXZlcyBhcyB1c3Vh
bC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNy
Yy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRGb3JBbm90aGVyVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGUpOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6Y3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpncmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogdGVzdHMvTW9j
a0dyYXBoaWNzQ29udGV4dDNEVGVzdC5jcHA6CisgICAgICAgIChURVNUKToKKwogMjAxMS0wOS0w
NyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk0NjM1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAppbmRleCAwN2Fk
MzRmMTE1YTk1NDYzMzMzZjdiN2YxM2Y5YzcxYmRiOTMxNWRhLi42OTY1ZGUyMDJiNzc5ZDk3NmQ0
MGI3YzJiM2YwZmY4ZDcxMzJiMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcApAQCAtMTE5LDExICsxMTks
MTQgQEAgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+IEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Y3JlYXRlKFdlYktpdDo6V2UKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZSh3ZWJWaWV3SW1wbCwgd2ViQ29udGV4dCkpOwogfQogCi1Q
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRD4gd2ViQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0
ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5k
ZXJTdHlsZSByZW5kZXJTdHlsZSkKK1Bhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQo
UGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0LCBHcmFw
aGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywg
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlLCBib29sIGZvclVzZU9u
QW5vdGhlclRocmVhZCkKIHsKICAgICBDaHJvbWUqIGNocm9tZSA9IHN0YXRpY19jYXN0PENocm9t
ZSo+KGhvc3RXaW5kb3cpOwogICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0g
Y2hyb21lID8gc3RhdGljX2Nhc3Q8V2ViS2l0OjpXZWJWaWV3SW1wbCo+KGNocm9tZS0+Y2xpZW50
KCktPndlYlZpZXcoKSkgOiAwOwogCisgICAgaWYgKCFmb3JVc2VPbkFub3RoZXJUaHJlYWQgJiYg
IXdlYkNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm4gMDsKKwog
ICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+IHByaXYgPSBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmNyZWF0ZSh3ZWJWaWV3SW1wbCwgd2ViQ29udGV4dCk7CiAgICAgaWYgKCFw
cml2KQogICAgICAgICByZXR1cm4gMDsKQEAgLTEzNCw2ICsxMzcsNDEgQEAgUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGlj
c0NvbnRleHRGcm8KICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAorbmFtZXNwYWNl
IHsKKworUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0
KEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2lu
ZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUsIGJvb2wgZm9y
VXNlT25Bbm90aGVyVGhyZWFkKQoreworICAgIGJvb2wgcmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5k
b3cgPSByZW5kZXJTdHlsZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hv
c3RXaW5kb3c7CisKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVz
IHdlYkF0dHJpYnV0ZXM7CisgICAgd2ViQXR0cmlidXRlcy5hbHBoYSA9IGF0dHJzLmFscGhhOwor
ICAgIHdlYkF0dHJpYnV0ZXMuZGVwdGggPSBhdHRycy5kZXB0aDsKKyAgICB3ZWJBdHRyaWJ1dGVz
LnN0ZW5jaWwgPSBhdHRycy5zdGVuY2lsOworICAgIHdlYkF0dHJpYnV0ZXMuYW50aWFsaWFzID0g
YXR0cnMuYW50aWFsaWFzOworICAgIHdlYkF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhID0g
YXR0cnMucHJlbXVsdGlwbGllZEFscGhhOworICAgIHdlYkF0dHJpYnV0ZXMuY2FuUmVjb3ZlckZy
b21Db250ZXh0TG9zcyA9IGF0dHJzLmNhblJlY292ZXJGcm9tQ29udGV4dExvc3M7CisgICAgd2Vi
QXR0cmlidXRlcy5ub0V4dGVuc2lvbnMgPSBhdHRycy5ub0V4dGVuc2lvbnM7CisgICAgd2ViQXR0
cmlidXRlcy5zaGFyZVJlc291cmNlcyA9IGF0dHJzLnNoYXJlUmVzb3VyY2VzOworICAgIE93blB0
cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0ID0gYWRvcHRQdHIoV2Vi
S2l0Ojp3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0M0QoKSk7
CisgICAgaWYgKCF3ZWJDb250ZXh0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIENocm9tZSog
Y2hyb21lID0gc3RhdGljX2Nhc3Q8Q2hyb21lKj4oaG9zdFdpbmRvdyk7CisgICAgV2ViS2l0OjpX
ZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBjaHJvbWUgPyBzdGF0aWNfY2FzdDxXZWJLaXQ6Oldl
YlZpZXdJbXBsKj4oY2hyb21lLT5jbGllbnQoKS0+d2ViVmlldygpKSA6IDA7CisKKyAgICBpZiAo
IXdlYkNvbnRleHQtPmluaXRpYWxpemUod2ViQXR0cmlidXRlcywgd2ViVmlld0ltcGwsIHJlbmRl
ckRpcmVjdGx5VG9Ib3N0V2luZG93KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4g
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29u
dGV4dCh3ZWJDb250ZXh0LnJlbGVhc2UoKSwgYXR0cnMsIGhvc3RXaW5kb3csIHJlbmRlclN0eWxl
LCBmYWxzZSk7Cit9CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEZvckFub3RoZXJUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0
cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHls
ZSByZW5kZXJTdHlsZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlR3JhcGhpY3NDb250ZXh0KGF0dHJz
LCBob3N0V2luZG93LCByZW5kZXJTdHlsZSwgdHJ1ZSk7Cit9CisKIFdlYktpdDo6V2ViR3JhcGhp
Y3NDb250ZXh0M0QqIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNz
Q29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewogICAgIGlmICghY29udGV4
dCkKQEAgLTk4NSwyOCArMTAyMyw3IEBAIEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250
ZXh0M0QoKQogCiBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQz
RDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93
KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUp
CiB7Ci0gICAgYm9vbCByZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyA9IHJlbmRlclN0eWxlID09
IFJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93OwotCi0gICAgV2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcyB3ZWJBdHRyaWJ1dGVzOwotICAgIHdlYkF0dHJpYnV0ZXMuYWxw
aGEgPSBhdHRycy5hbHBoYTsKLSAgICB3ZWJBdHRyaWJ1dGVzLmRlcHRoID0gYXR0cnMuZGVwdGg7
Ci0gICAgd2ViQXR0cmlidXRlcy5zdGVuY2lsID0gYXR0cnMuc3RlbmNpbDsKLSAgICB3ZWJBdHRy
aWJ1dGVzLmFudGlhbGlhcyA9IGF0dHJzLmFudGlhbGlhczsKLSAgICB3ZWJBdHRyaWJ1dGVzLnBy
ZW11bHRpcGxpZWRBbHBoYSA9IGF0dHJzLnByZW11bHRpcGxpZWRBbHBoYTsKLSAgICB3ZWJBdHRy
aWJ1dGVzLmNhblJlY292ZXJGcm9tQ29udGV4dExvc3MgPSBhdHRycy5jYW5SZWNvdmVyRnJvbUNv
bnRleHRMb3NzOwotICAgIHdlYkF0dHJpYnV0ZXMubm9FeHRlbnNpb25zID0gYXR0cnMubm9FeHRl
bnNpb25zOwotICAgIHdlYkF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMgPSBhdHRycy5zaGFyZVJl
c291cmNlczsKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gd2ViQ29u
dGV4dCA9IGFkb3B0UHRyKFdlYktpdDo6d2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmNyZWF0ZUdy
YXBoaWNzQ29udGV4dDNEKCkpOwotICAgIGlmICghd2ViQ29udGV4dCkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBDaHJvbWUqIGNocm9tZSA9IHN0YXRpY19jYXN0PENocm9tZSo+KGhvc3RXaW5k
b3cpOwotICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gY2hyb21lID8gc3Rh
dGljX2Nhc3Q8V2ViS2l0OjpXZWJWaWV3SW1wbCo+KGNocm9tZS0+Y2xpZW50KCktPndlYlZpZXco
KSkgOiAwOwotCi0gICAgaWYgKCF3ZWJDb250ZXh0LT5pbml0aWFsaXplKHdlYkF0dHJpYnV0ZXMs
IHdlYlZpZXdJbXBsLCByZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0RnJvbVdlYkNvbnRleHQod2ViQ29udGV4dC5yZWxlYXNlKCksIGF0dHJzLCBob3N0
V2luZG93LCByZW5kZXJTdHlsZSk7CisgICAgcmV0dXJuIGNyZWF0ZUdyYXBoaWNzQ29udGV4dChh
dHRycywgaG9zdFdpbmRvdywgcmVuZGVyU3R5bGUsIGZhbHNlKTsKIH0KIAogUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQz
RCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IDhiODg5NzJjMjA2MmVlNzBlNDFmYTQzYTE4OTUwYjZm
ZWJiNTFlNmYuLjdlYmNlYjBkNDM4NzJlMmViYzc5OGQxNjEzMTg2ZDc2MzVkM2Y0Y2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5oCkBAIC01Nyw4ICs1NywxNSBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUg
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZT4gY3JlYXRlKFdlYktpdDo6V2ViVmlld0ltcGwqLCBQYXNzT3duUHRyPFdlYktpdDo6V2ViR3Jh
cGhpY3NDb250ZXh0M0Q+KTsKIAorICAgIC8vIFVzZWQgdG8gY3JlYXRlIGEgR3JhcGhpY3NDb250
ZXh0M0QgZm9yIHVzZSBvbiBhIHRocmVhZC4gV2lsbCBza2lwIG1ha2luZworICAgIC8vIHRoZSBj
b250ZXh0IGN1cnJlbnQuIENhbGxlcnMgbXVzdCBtYWtlIHRoZSBjb250ZXh0IGN1cnJlbnQgYmVm
b3JlIHVzaW5nCisgICAgLy8gaXQgQU5EIGNoZWNrIHRoYXQgdGhlIGNvbnRleHQgd2FzIGNyZWF0
ZWQgc3VjY2Vzc2Z1bGx5IHZpYQorICAgIC8vIENvbnRleHRMb3N0LiBPbmNlIG1hZGUgY3VycmVu
dCBvbiBhIHRocmVhZCwgdGhlIGNvbnRleHQgY2Fubm90IGJlIHVzZWQgb24KKyAgICAvLyBhbnkg
b3RoZXIgdGhyZWFkLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBj
cmVhdGVHcmFwaGljc0NvbnRleHRGb3JBbm90aGVyVGhyZWFkKEdyYXBoaWNzQ29udGV4dDNEOjpB
dHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlKTsK
KwogICAgIC8vIFVzZWQgaW4gdGVzdHMgdG8gY3JlYXRlIGEgR3JhcGhpY3NDb250ZXh0M0QgZnJv
bSBhIG1vY2tlZCBXZWJHcmFwaGljc0NvbnRleHQzRC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoUGFz
c093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVHcmFwaGlj
c0NvbnRleHRGcm9tV2ViQ29udGV4dChQYXNzT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250
ZXh0M0Q+LCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBo
aWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSwgYm9vbCBmb3JVc2VPbkFub3RoZXJUaHJlYWQpOwog
CiAgICAgfkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNmMyOTJjMWQ1ODA4NTg5ZWNkZTA1YWMyY2Nh
ZDc0ZWE1YTI1NTJiMS4uMDFjODczY2Y3MGZjZWRhYzRjYzMzNzkwMzhiODQzMzczZWI4NmU0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMjY4NSw3
ICsyNjg1LDExIEBAIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IFdlYlZpZXdJbXBsOjpj
cmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCkKIHsKICAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNvbnRleHQgPSBtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3NDb250ZXh0M0QucmVs
ZWFzZSgpOwogICAgIGlmICghY29udGV4dCkgeworI2lmIFVTRShUSFJFQURFRF9DT01QT1NJVElO
RykKKyAgICAgICAgY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0Rm9yQW5vdGhlclRocmVhZChnZXRDb21wb3NpdG9yQ29udGV4dEF0dHJpYnV0
ZXMoKSwgbV9wYWdlLT5jaHJvbWUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5
VG9Ib3N0V2luZG93KTsKKyNlbHNlCiAgICAgICAgIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQz
RDo6Y3JlYXRlKGdldENvbXBvc2l0b3JDb250ZXh0QXR0cmlidXRlcygpLCBtX3BhZ2UtPmNocm9t
ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOworI2Vu
ZGlmCiAgICAgfQogICAgIHJldHVybiBjb250ZXh0OwogfQpAQCAtMjc1Myw3ICsyNzU3LDExIEBA
IFdlYkdyYXBoaWNzQ29udGV4dDNEKiBXZWJWaWV3SW1wbDo6Z3JhcGhpY3NDb250ZXh0M0QoKQog
ICAgICAgICAgICAgaWYgKHdlYkNvbnRleHQgJiYgIXdlYkNvbnRleHQtPmlzQ29udGV4dExvc3Qo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gd2ViQ29udGV4dDsKICAgICAgICAgfQorI2lmIFVT
RShUSFJFQURFRF9DT01QT1NJVElORykKKyAgICAgICAgbV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBo
aWNzQ29udGV4dDNEID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRGb3JBbm90aGVyVGhyZWFkKGdldENvbXBvc2l0b3JDb250ZXh0QXR0cmlidXRlcygpLCBt
X3BhZ2UtPmNocm9tZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RX
aW5kb3cpOworI2Vsc2UKICAgICAgICAgbV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4
dDNEID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShnZXRDb21wb3NpdG9yQ29udGV4dEF0dHJp
YnV0ZXMoKSwgbV9wYWdlLT5jaHJvbWUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVj
dGx5VG9Ib3N0V2luZG93KTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobV90ZW1wb3JhcnlPbnNjcmVl
bkdyYXBoaWNzQ29udGV4dDNELmdldCgpKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0dyYXBoaWNzQ29udGV4dDNEVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tHcmFwaGljc0NvbnRleHQzRFRlc3Qu
Y3BwCmluZGV4IDJkMzY1Mzc5NTg3ZjQ4ZDc3NjEwNzljNjBkNjE5NTQ2NWUwYWI0ODUuLjJlMmUy
OTFlODU1YzYwNjNkMjk4Nzc1ZTk1M2RlYzAyZTUxZjM1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0dyYXBoaWNzQ29udGV4dDNEVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrR3JhcGhpY3NDb250ZXh0M0RUZXN0LmNw
cApAQCAtNTMsMTAgKzUzLDkgQEAgcHJpdmF0ZToKIFRFU1QoTW9ja0dyYXBoaWNzQ29udGV4dDNE
VGVzdCwgQ2FuT3ZlcnJpZGVNYW51YWxseSkKIHsKICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0
cmlidXRlcyBhdHRyczsKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250
ZXh0KGFkb3B0UHRyKG5ldyBGcmFtZUNvdW50aW5nQ29udGV4dCgpKSwgYXR0cnMsIDAsIEdyYXBo
aWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CisgICAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVh
dGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRnJhbWVDb3VudGlu
Z0NvbnRleHQoKSksIGF0dHJzLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlU
b0hvc3RXaW5kb3csIGZhbHNlKTsKICAgICBGcmFtZUNvdW50aW5nQ29udGV4dCYgbW9ja0NvbnRl
eHQgPSAqc3RhdGljX2Nhc3Q8RnJhbWVDb3VudGluZ0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChjb250ZXh0LmdldCgpKSk7CiAK
LSAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IDEwOyBpKyspIHsKICAgICAgICAgY29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAwLCAxKTsK
ICAgICAgICAgY29udGV4dC0+cHJlcGFyZVRleHR1cmUoKTsKQEAgLTY5LDEzICs2OCwxNCBAQCBU
RVNUKE1vY2tHcmFwaGljc0NvbnRleHQzRFRlc3QsIENhbk92ZXJyaWRlTWFudWFsbHkpCiAKIGNs
YXNzIEdNb2NrQ29udGV4dCA6IHB1YmxpYyBNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QgewogcHVi
bGljOgorICAgIE1PQ0tfTUVUSE9EMChtYWtlQ29udGV4dEN1cnJlbnQsIGJvb2woKSk7CiAgICAg
TU9DS19NRVRIT0QwKGdldEVycm9yLCBXR0MzRGVudW0oKSk7CiB9OwogCiBURVNUKE1vY2tHcmFw
aGljc0NvbnRleHQzRFRlc3QsIENhblVzZUdNb2NrKQogewogICAgIEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIGF0dHJzOwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4
dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdl
YkNvbnRleHQoYWRvcHRQdHIobmV3IEdNb2NrQ29udGV4dCgpKSwgYXR0cnMsIDAsIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CisgICAgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVH
cmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgR01vY2tDb250ZXh0KCkp
LCBhdHRycywgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93
LCBmYWxzZSk7CiAgICAgR01vY2tDb250ZXh0JiBtb2NrQ29udGV4dCA9ICpzdGF0aWNfY2FzdDxH
TW9ja0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGlj
c0NvbnRleHQzRChjb250ZXh0LmdldCgpKSk7CiAKICAgICBFWFBFQ1RfQ0FMTChtb2NrQ29udGV4
dCwgZ2V0RXJyb3IoKSkKQEAgLTg4LDMgKzg4LDIyIEBAIFRFU1QoTW9ja0dyYXBoaWNzQ29udGV4
dDNEVGVzdCwgQ2FuVXNlR01vY2spCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKQog
ICAgICAgICBFWFBFQ1RfRVEoKGludCljb250ZXh0LT5nZXRFcnJvcigpLCAzMTQpOwogfQorCisK
K1RFU1QoTW9ja0dyYXBoaWNzQ29udGV4dDNEVGVzdCwgQ29udGV4dE1hZGVDdXJyZW50KQorewor
ICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOworICAgIFJlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRl
R3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEdNb2NrQ29udGV4dCgp
KSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRv
dywgZmFsc2UpOworICAgIEdNb2NrQ29udGV4dCYgbW9ja0NvbnRleHQgPSAqc3RhdGljX2Nhc3Q8
R01vY2tDb250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhp
Y3NDb250ZXh0M0QoY29udGV4dC5nZXQoKSkpOworCisgICAgRVhQRUNUX0NBTEwobW9ja0NvbnRl
eHQsIG1ha2VDb250ZXh0Q3VycmVudCgpKTsKK30KKworVEVTVChNb2NrR3JhcGhpY3NDb250ZXh0
M0RUZXN0LCBEZWxheWVkQ29udGV4dE5vdE1hZGVDdXJyZW50KQoreworICAgIEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
Y29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEdNb2NrQ29udGV4dCgpKSwgYXR0cnMsIDAsIEdy
YXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdywgZmFsc2UpOworICAg
IEdNb2NrQ29udGV4dCYgbW9ja0NvbnRleHQgPSAqc3RhdGljX2Nhc3Q8R01vY2tDb250ZXh0Kj4o
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoY29u
dGV4dC5nZXQoKSkpOworCisgICAgRVhQRUNUX0NBTEwobW9ja0NvbnRleHQsIG1ha2VDb250ZXh0
Q3VycmVudCgpKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106877</attachid>
            <date>2011-09-09 08:50:55 -0700</date>
            <delta_ts>2011-09-09 18:38:32 -0700</delta_ts>
            <desc>now with comments.</desc>
            <filename>bug-67832-20110909085053.patch</filename>
            <type>text/plain</type>
            <size>14082</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ4MzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
YjEzN2E5YTdhNjU4NGE2YzFlMjE2MWU5NTcyNzBjOGE4NDE1MTkxZC4uNWNhMzJhOTA0NjE5NmFj
OTRjNjZlYWRmMTU3ZDFiYzBkYjM0YjM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAxMS0wOS0wOCAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOmNyZWF0
ZUdyYXBoaWNzQ29udGV4dEZvckFub3RoZXJUaHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3ODMyCisKKyAgICAgICAgVGhlIGNvbXBvc2l0b3Ig
dGhyZWFkIG5lZWRzIHRvIGNyZWF0ZSBhIEdyYXBoaWNzQ29udGV4dDNEIHdpdGhvdXQKKyAgICAg
ICAgYWN0dWFsbHkgbWFraW5nIGl0IGN1cnJlbnQuIEluIHByZXZpb3VzIGF0dGVtcHRzIGF0IGRv
aW5nIHRoaXMsCisgICAgICAgIHdlIG1vZGlmaWVkIGFsbCBncmFwaGljczNEIGNyZWF0aW9uIHRv
IG5vdCBtYWtlIHRoZSBjb250ZXh0cyBjdXJyZW50LAorICAgICAgICBidXQgdGhpcyBwcm92ZSB0
byBiZSBzaG9ja2luZ2x5IGZyYWdpbGUuIFNpbmNlIHRoaXMgaXMgYSB2ZXJ5IENocm9taXVtLXNw
ZWNpZmljCisgICAgICAgIGJlaGF2aW9yLCB0aGlzIHBhdGNoIG1ha2VzIGNyZWF0aW9uRm9yQW5v
dGhlclRocmVhZCBhIG1ldGhvZCBvbiB0aGUgcHJpdmF0ZQorICAgICAgICBHcmFwaGljc0NvbnRl
eHQzRCBpbnRlcmZhY2UuIEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUgYmVoYXZlcyBhcyB1c3Vh
bC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNy
Yy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRGb3JBbm90aGVyVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGUpOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6Y3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpncmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogdGVzdHMvTW9j
a0dyYXBoaWNzQ29udGV4dDNEVGVzdC5jcHA6CisgICAgICAgIChURVNUKToKKwogMjAxMS0wOS0w
OCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEFub3RoZXIgYXR0
ZW1wdCB0byBmaXggdGhlIENocm9taXVtIGJ1aWxkLiAgKE1pc3NlZCBvbmUuKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKaW5k
ZXggZGY0Y2VjZGE4OWQxMGFjMDcxMzBjMGNhZTEwMzMxOWM0MTZjYWQzOS4uZmMzMjczYjIxYTlj
YzNkZTZmMTI0NDJhODBjMGY1NjhhZTcyOTVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCkBAIC03MCw3ICs3MCwxMiBA
QCBjbGFzcyBXZWJWaWV3OwogLy8gR3JhcGhpY3NDb250ZXh0M0QgaW4gb3JkZXIgdG8gaW1wbGVt
ZW50IFdlYkdMLiBOZWFybHkgYWxsIG9mIHRoZQogLy8gbWV0aG9kcyBleHBvc2VkIG9uIHRoaXMg
aW50ZXJmYWNlIG1hcCBkaXJlY3RseSB0byBlbnRyeSBwb2ludHMgaW4KIC8vIHRoZSBPcGVuR0wg
RVMgMi4wIEFQSS4KLQorLy8KKy8vIENyZWF0aW5nIGEgV2ViR3JhcGhpY3NDb250ZXh0IGRvZXMg
bm90IG1ha2UgaXQgY3VycmVudCwgb3IgZ3VhcmFudGVlCisvLyB0aGF0IHRoZSBjb250ZXh0IGhh
cyBiZWVuIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LiBVc2UKKy8vIG1ha2VDb250ZXh0Q3VycmVudCgp
IHRvIGNvbXBsZXRlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBjb250ZXh0LCB0cmVhdGluZworLy8g
YSBmYWxzZSByZXR1cm4gdmFsdWUgYXMgaW5kaWNhdGlvbiB0aGF0IHRoZSBjb250ZXh0IGNvdWxk
IG5vdCBiZSBjcmVhdGVkCisvLyBzdWNjZXNzZnVsbHkuCiBjbGFzcyBXZWJHcmFwaGljc0NvbnRl
eHQzRCA6IHB1YmxpYyBXZWJOb25Db3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHZh
bHVlIGZyb20gZ2V0QWN0aXZlVW5pZm9ybSBhbmQgZ2V0QWN0aXZlQXR0cmliLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVt
LmNwcAppbmRleCAwN2FkMzRmMTE1YTk1NDYzMzMzZjdiN2YxM2Y5YzcxYmRiOTMxNWRhLi42OTY1
ZGUyMDJiNzc5ZDk3NmQ0MGI3YzJiM2YwZmY4ZDcxMzJiMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcApA
QCAtMTE5LDExICsxMTksMTQgQEAgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlKFdlYktpdDo6V2UKICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSh3ZWJWaWV3SW1wbCwgd2ViQ29u
dGV4dCkpOwogfQogCi1QYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KFBhc3NPd25Q
dHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gd2ViQ29udGV4dCwgR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKK1Bhc3NSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
RnJvbVdlYkNvbnRleHQoUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiB3
ZWJDb250ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRv
dyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxl
LCBib29sIGZvclVzZU9uQW5vdGhlclRocmVhZCkKIHsKICAgICBDaHJvbWUqIGNocm9tZSA9IHN0
YXRpY19jYXN0PENocm9tZSo+KGhvc3RXaW5kb3cpOwogICAgIFdlYktpdDo6V2ViVmlld0ltcGwq
IHdlYlZpZXdJbXBsID0gY2hyb21lID8gc3RhdGljX2Nhc3Q8V2ViS2l0OjpXZWJWaWV3SW1wbCo+
KGNocm9tZS0+Y2xpZW50KCktPndlYlZpZXcoKSkgOiAwOwogCisgICAgaWYgKCFmb3JVc2VPbkFu
b3RoZXJUaHJlYWQgJiYgIXdlYkNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAg
ICByZXR1cm4gMDsKKwogICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+IHByaXYg
PSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZSh3ZWJWaWV3SW1wbCwgd2ViQ29udGV4
dCk7CiAgICAgaWYgKCFwcml2KQogICAgICAgICByZXR1cm4gMDsKQEAgLTEzNCw2ICsxMzcsNDEg
QEAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm8KICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsK
IH0KIAorbmFtZXNwYWNlIHsKKworUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRl
R3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0
V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVy
U3R5bGUsIGJvb2wgZm9yVXNlT25Bbm90aGVyVGhyZWFkKQoreworICAgIGJvb2wgcmVuZGVyRGly
ZWN0bHlUb0hvc3RXaW5kb3cgPSByZW5kZXJTdHlsZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6UmVu
ZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3c7CisKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzIHdlYkF0dHJpYnV0ZXM7CisgICAgd2ViQXR0cmlidXRlcy5hbHBoYSA9
IGF0dHJzLmFscGhhOworICAgIHdlYkF0dHJpYnV0ZXMuZGVwdGggPSBhdHRycy5kZXB0aDsKKyAg
ICB3ZWJBdHRyaWJ1dGVzLnN0ZW5jaWwgPSBhdHRycy5zdGVuY2lsOworICAgIHdlYkF0dHJpYnV0
ZXMuYW50aWFsaWFzID0gYXR0cnMuYW50aWFsaWFzOworICAgIHdlYkF0dHJpYnV0ZXMucHJlbXVs
dGlwbGllZEFscGhhID0gYXR0cnMucHJlbXVsdGlwbGllZEFscGhhOworICAgIHdlYkF0dHJpYnV0
ZXMuY2FuUmVjb3ZlckZyb21Db250ZXh0TG9zcyA9IGF0dHJzLmNhblJlY292ZXJGcm9tQ29udGV4
dExvc3M7CisgICAgd2ViQXR0cmlidXRlcy5ub0V4dGVuc2lvbnMgPSBhdHRycy5ub0V4dGVuc2lv
bnM7CisgICAgd2ViQXR0cmlidXRlcy5zaGFyZVJlc291cmNlcyA9IGF0dHJzLnNoYXJlUmVzb3Vy
Y2VzOworICAgIE93blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0
ID0gYWRvcHRQdHIoV2ViS2l0Ojp3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0M0QoKSk7CisgICAgaWYgKCF3ZWJDb250ZXh0KQorICAgICAgICByZXR1cm4gMDsK
KworICAgIENocm9tZSogY2hyb21lID0gc3RhdGljX2Nhc3Q8Q2hyb21lKj4oaG9zdFdpbmRvdyk7
CisgICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBjaHJvbWUgPyBzdGF0aWNf
Y2FzdDxXZWJLaXQ6OldlYlZpZXdJbXBsKj4oY2hyb21lLT5jbGllbnQoKS0+d2ViVmlldygpKSA6
IDA7CisKKyAgICBpZiAoIXdlYkNvbnRleHQtPmluaXRpYWxpemUod2ViQXR0cmlidXRlcywgd2Vi
Vmlld0ltcGwsIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRGcm9tV2ViQ29udGV4dCh3ZWJDb250ZXh0LnJlbGVhc2UoKSwgYXR0cnMsIGhvc3RXaW5k
b3csIHJlbmRlclN0eWxlLCBmYWxzZSk7Cit9CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQor
CitQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZvckFub3RoZXJUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0Q6
OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlR3JhcGhp
Y3NDb250ZXh0KGF0dHJzLCBob3N0V2luZG93LCByZW5kZXJTdHlsZSwgdHJ1ZSk7Cit9CisKIFdl
YktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0
cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewog
ICAgIGlmICghY29udGV4dCkKQEAgLTk4NSwyOCArMTAyMyw3IEBAIEdyYXBoaWNzQ29udGV4dDNE
Ojp+R3JhcGhpY3NDb250ZXh0M0QoKQogCiBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0
dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5
bGUgcmVuZGVyU3R5bGUpCiB7Ci0gICAgYm9vbCByZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyA9
IHJlbmRlclN0eWxlID09IFJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93OwotCi0gICAgV2ViS2l0
OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyB3ZWJBdHRyaWJ1dGVzOwotICAgIHdl
YkF0dHJpYnV0ZXMuYWxwaGEgPSBhdHRycy5hbHBoYTsKLSAgICB3ZWJBdHRyaWJ1dGVzLmRlcHRo
ID0gYXR0cnMuZGVwdGg7Ci0gICAgd2ViQXR0cmlidXRlcy5zdGVuY2lsID0gYXR0cnMuc3RlbmNp
bDsKLSAgICB3ZWJBdHRyaWJ1dGVzLmFudGlhbGlhcyA9IGF0dHJzLmFudGlhbGlhczsKLSAgICB3
ZWJBdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSA9IGF0dHJzLnByZW11bHRpcGxpZWRBbHBo
YTsKLSAgICB3ZWJBdHRyaWJ1dGVzLmNhblJlY292ZXJGcm9tQ29udGV4dExvc3MgPSBhdHRycy5j
YW5SZWNvdmVyRnJvbUNvbnRleHRMb3NzOwotICAgIHdlYkF0dHJpYnV0ZXMubm9FeHRlbnNpb25z
ID0gYXR0cnMubm9FeHRlbnNpb25zOwotICAgIHdlYkF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMg
PSBhdHRycy5zaGFyZVJlc291cmNlczsKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRD4gd2ViQ29udGV4dCA9IGFkb3B0UHRyKFdlYktpdDo6d2ViS2l0UGxhdGZvcm1TdXBw
b3J0KCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dDNEKCkpOwotICAgIGlmICghd2ViQ29udGV4dCkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBDaHJvbWUqIGNocm9tZSA9IHN0YXRpY19jYXN0PENo
cm9tZSo+KGhvc3RXaW5kb3cpOwotICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIHdlYlZpZXdJbXBs
ID0gY2hyb21lID8gc3RhdGljX2Nhc3Q8V2ViS2l0OjpXZWJWaWV3SW1wbCo+KGNocm9tZS0+Y2xp
ZW50KCktPndlYlZpZXcoKSkgOiAwOwotCi0gICAgaWYgKCF3ZWJDb250ZXh0LT5pbml0aWFsaXpl
KHdlYkF0dHJpYnV0ZXMsIHdlYlZpZXdJbXBsLCByZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQod2ViQ29udGV4dC5yZWxlYXNl
KCksIGF0dHJzLCBob3N0V2luZG93LCByZW5kZXJTdHlsZSk7CisgICAgcmV0dXJuIGNyZWF0ZUdy
YXBoaWNzQ29udGV4dChhdHRycywgaG9zdFdpbmRvdywgcmVuZGVyU3R5bGUsIGZhbHNlKTsKIH0K
IAogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1H
cmFwaGljc0NvbnRleHQzRCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IDhiODg5NzJjMjA2MmVlNzBl
NDFmYTQzYTE4OTUwYjZmZWJiNTFlNmYuLjQ1YTk1NmMzYzQ1NWExNTI0NzQxYzU0MDcwYjk2OTE4
NjQxOWM2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5oCkBAIC01Nyw4ICs1NywxNSBAQCBjbGFzcyBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZT4gY3JlYXRlKFdlYktpdDo6V2ViVmlld0ltcGwqLCBQYXNzT3duUHRy
PFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+KTsKIAorICAgIC8vIGNyZWF0ZUdyYXBoaWNz
Q29udGV4dEZvckFub3RoZXJUaHJlYWQgaXMgZXF1aXZhbGVudCB0bworICAgIC8vIEdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGUsIGJ1dCB3aWxsIHNraXAgbWFraW5nIHRoZSBjb250ZXh0CisgICAg
Ly8gY3VycmVudC4gQ2FsbGVycyBtdXN0IG1ha2UgdGhlIGNvbnRleHQgY3VycmVudCBiZWZvcmUg
dXNpbmcgaXQgQU5EIGNoZWNrCisgICAgLy8gdGhhdCB0aGUgY29udGV4dCB3YXMgY3JlYXRlZCBz
dWNjZXNzZnVsbHkgdmlhIENvbnRleHRMb3N0LiBPbmNlIG1hZGUKKyAgICAvLyBjdXJyZW50IG9u
IGEgdGhyZWFkLCB0aGUgY29udGV4dCBjYW5ub3QgYmUgdXNlZCBvbiBhbnkgb3RoZXIgdGhyZWFk
LgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVHcmFwaGlj
c0NvbnRleHRGb3JBbm90aGVyVGhyZWFkKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzLCBI
b3N0V2luZG93KiwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlKTsKKwogICAgIC8vIFVz
ZWQgaW4gdGVzdHMgdG8gY3JlYXRlIGEgR3JhcGhpY3NDb250ZXh0M0QgZnJvbSBhIG1vY2tlZCBX
ZWJHcmFwaGljc0NvbnRleHQzRC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoUGFzc093blB0cjxXZWJL
aXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiwgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMs
IEhvc3RXaW5kb3cqLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9t
V2ViQ29udGV4dChQYXNzT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+LCBHcmFw
aGljc0NvbnRleHQzRDo6QXR0cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJTdHlsZSwgYm9vbCBmb3JVc2VPbkFub3RoZXJUaHJlYWQpOwogCiAgICAgfkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKaW5kZXggNzM4ZDdhM2Q5NWRjNTNlZjgxMmVkNDM5ZDJiMTljMThjODJiZjdj
OS4uNzA2ZDU4Mjg0ZTE1MTE4Njc4ZWJkMjBlYTE1ODQ0MTYyMWIxNmJkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMjY5MSw3ICsyNjkxLDExIEBA
IFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IFdlYlZpZXdJbXBsOjpjcmVhdGVMYXllclRy
ZWVIb3N0Q29udGV4dDNEKCkKIHsKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRl
eHQgPSBtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3NDb250ZXh0M0QucmVsZWFzZSgpOwogICAg
IGlmICghY29udGV4dCkgeworI2lmIFVTRShUSFJFQURFRF9DT01QT1NJVElORykKKyAgICAgICAg
Y29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
Rm9yQW5vdGhlclRocmVhZChnZXRDb21wb3NpdG9yQ29udGV4dEF0dHJpYnV0ZXMoKSwgbV9wYWdl
LT5jaHJvbWUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93
KTsKKyNlbHNlCiAgICAgICAgIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGdl
dENvbXBvc2l0b3JDb250ZXh0QXR0cmlidXRlcygpLCBtX3BhZ2UtPmNocm9tZSgpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOworI2VuZGlmCiAgICAgfQog
ICAgIHJldHVybiBjb250ZXh0OwogfQpAQCAtMjc1OSw3ICsyNzYzLDExIEBAIFdlYkdyYXBoaWNz
Q29udGV4dDNEKiBXZWJWaWV3SW1wbDo6Z3JhcGhpY3NDb250ZXh0M0QoKQogICAgICAgICAgICAg
aWYgKHdlYkNvbnRleHQgJiYgIXdlYkNvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gd2ViQ29udGV4dDsKICAgICAgICAgfQorI2lmIFVTRShUSFJFQURFRF9D
T01QT1NJVElORykKKyAgICAgICAgbV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4dDNE
ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGb3JBbm90
aGVyVGhyZWFkKGdldENvbXBvc2l0b3JDb250ZXh0QXR0cmlidXRlcygpLCBtX3BhZ2UtPmNocm9t
ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOworI2Vs
c2UKICAgICAgICAgbV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4dDNEID0gR3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZShnZXRDb21wb3NpdG9yQ29udGV4dEF0dHJpYnV0ZXMoKSwgbV9w
YWdlLT5jaHJvbWUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2lu
ZG93KTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpl
eHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29u
dGV4dDNELmdldCgpKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTW9ja0dyYXBoaWNzQ29udGV4dDNEVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL01vY2tHcmFwaGljc0NvbnRleHQzRFRlc3QuY3BwCmluZGV4IDJk
MzY1Mzc5NTg3ZjQ4ZDc3NjEwNzljNjBkNjE5NTQ2NWUwYWI0ODUuLjJlMmUyOTFlODU1YzYwNjNk
Mjk4Nzc1ZTk1M2RlYzAyZTUxZjM1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvTW9ja0dyYXBoaWNzQ29udGV4dDNEVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9Nb2NrR3JhcGhpY3NDb250ZXh0M0RUZXN0LmNwcApAQCAtNTMsMTAg
KzUzLDkgQEAgcHJpdmF0ZToKIFRFU1QoTW9ja0dyYXBoaWNzQ29udGV4dDNEVGVzdCwgQ2FuT3Zl
cnJpZGVNYW51YWxseSkKIHsKICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRy
czsKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRy
KG5ldyBGcmFtZUNvdW50aW5nQ29udGV4dCgpKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRnJhbWVDb3VudGluZ0NvbnRleHQoKSks
IGF0dHJzLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cs
IGZhbHNlKTsKICAgICBGcmFtZUNvdW50aW5nQ29udGV4dCYgbW9ja0NvbnRleHQgPSAqc3RhdGlj
X2Nhc3Q8RnJhbWVDb3VudGluZ0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4
dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChjb250ZXh0LmdldCgpKSk7CiAKLSAgICBjb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKysp
IHsKICAgICAgICAgY29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAwLCAxKTsKICAgICAgICAgY29u
dGV4dC0+cHJlcGFyZVRleHR1cmUoKTsKQEAgLTY5LDEzICs2OCwxNCBAQCBURVNUKE1vY2tHcmFw
aGljc0NvbnRleHQzRFRlc3QsIENhbk92ZXJyaWRlTWFudWFsbHkpCiAKIGNsYXNzIEdNb2NrQ29u
dGV4dCA6IHB1YmxpYyBNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QgewogcHVibGljOgorICAgIE1P
Q0tfTUVUSE9EMChtYWtlQ29udGV4dEN1cnJlbnQsIGJvb2woKSk7CiAgICAgTU9DS19NRVRIT0Qw
KGdldEVycm9yLCBXR0MzRGVudW0oKSk7CiB9OwogCiBURVNUKE1vY2tHcmFwaGljc0NvbnRleHQz
RFRlc3QsIENhblVzZUdNb2NrKQogewogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVz
IGF0dHJzOwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRv
cHRQdHIobmV3IEdNb2NrQ29udGV4dCgpKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpS
ZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRl
eHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgR01vY2tDb250ZXh0KCkpLCBhdHRycywgMCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93LCBmYWxzZSk7CiAg
ICAgR01vY2tDb250ZXh0JiBtb2NrQ29udGV4dCA9ICpzdGF0aWNfY2FzdDxHTW9ja0NvbnRleHQq
PihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChj
b250ZXh0LmdldCgpKSk7CiAKICAgICBFWFBFQ1RfQ0FMTChtb2NrQ29udGV4dCwgZ2V0RXJyb3Io
KSkKQEAgLTg4LDMgKzg4LDIyIEBAIFRFU1QoTW9ja0dyYXBoaWNzQ29udGV4dDNEVGVzdCwgQ2Fu
VXNlR01vY2spCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKQogICAgICAgICBFWFBF
Q1RfRVEoKGludCljb250ZXh0LT5nZXRFcnJvcigpLCAzMTQpOwogfQorCisKK1RFU1QoTW9ja0dy
YXBoaWNzQ29udGV4dDNEVGVzdCwgQ29udGV4dE1hZGVDdXJyZW50KQoreworICAgIEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250
ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEdNb2NrQ29udGV4dCgpKSwgYXR0cnMsIDAs
IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdywgZmFsc2UpOwor
ICAgIEdNb2NrQ29udGV4dCYgbW9ja0NvbnRleHQgPSAqc3RhdGljX2Nhc3Q8R01vY2tDb250ZXh0
Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0Qo
Y29udGV4dC5nZXQoKSkpOworCisgICAgRVhQRUNUX0NBTEwobW9ja0NvbnRleHQsIG1ha2VDb250
ZXh0Q3VycmVudCgpKTsKK30KKworVEVTVChNb2NrR3JhcGhpY3NDb250ZXh0M0RUZXN0LCBEZWxh
eWVkQ29udGV4dE5vdE1hZGVDdXJyZW50KQoreworICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aWJ1dGVzIGF0dHJzOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRl
eHQoYWRvcHRQdHIobmV3IEdNb2NrQ29udGV4dCgpKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdywgZmFsc2UpOworICAgIEdNb2NrQ29udGV4
dCYgbW9ja0NvbnRleHQgPSAqc3RhdGljX2Nhc3Q8R01vY2tDb250ZXh0Kj4oR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoY29udGV4dC5nZXQoKSkp
OworCisgICAgRVhQRUNUX0NBTEwobW9ja0NvbnRleHQsIG1ha2VDb250ZXh0Q3VycmVudCgpKTsK
K30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106950</attachid>
            <date>2011-09-09 18:38:35 -0700</date>
            <delta_ts>2011-09-09 23:46:06 -0700</delta_ts>
            <desc>ThreadUsage enum</desc>
            <filename>bug-67832-20110909183834.patch</filename>
            <type>text/plain</type>
            <size>14232</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ4MzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
YjEzN2E5YTdhNjU4NGE2YzFlMjE2MWU5NTcyNzBjOGE4NDE1MTkxZC4uNWNhMzJhOTA0NjE5NmFj
OTRjNjZlYWRmMTU3ZDFiYzBkYjM0YjM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAxMS0wOS0wOCAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOmNyZWF0
ZUdyYXBoaWNzQ29udGV4dEZvckFub3RoZXJUaHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3ODMyCisKKyAgICAgICAgVGhlIGNvbXBvc2l0b3Ig
dGhyZWFkIG5lZWRzIHRvIGNyZWF0ZSBhIEdyYXBoaWNzQ29udGV4dDNEIHdpdGhvdXQKKyAgICAg
ICAgYWN0dWFsbHkgbWFraW5nIGl0IGN1cnJlbnQuIEluIHByZXZpb3VzIGF0dGVtcHRzIGF0IGRv
aW5nIHRoaXMsCisgICAgICAgIHdlIG1vZGlmaWVkIGFsbCBncmFwaGljczNEIGNyZWF0aW9uIHRv
IG5vdCBtYWtlIHRoZSBjb250ZXh0cyBjdXJyZW50LAorICAgICAgICBidXQgdGhpcyBwcm92ZSB0
byBiZSBzaG9ja2luZ2x5IGZyYWdpbGUuIFNpbmNlIHRoaXMgaXMgYSB2ZXJ5IENocm9taXVtLXNw
ZWNpZmljCisgICAgICAgIGJlaGF2aW9yLCB0aGlzIHBhdGNoIG1ha2VzIGNyZWF0aW9uRm9yQW5v
dGhlclRocmVhZCBhIG1ldGhvZCBvbiB0aGUgcHJpdmF0ZQorICAgICAgICBHcmFwaGljc0NvbnRl
eHQzRCBpbnRlcmZhY2UuIEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUgYmVoYXZlcyBhcyB1c3Vh
bC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNy
Yy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRGb3JBbm90aGVyVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGUpOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6Y3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpncmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogdGVzdHMvTW9j
a0dyYXBoaWNzQ29udGV4dDNEVGVzdC5jcHA6CisgICAgICAgIChURVNUKToKKwogMjAxMS0wOS0w
OCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEFub3RoZXIgYXR0
ZW1wdCB0byBmaXggdGhlIENocm9taXVtIGJ1aWxkLiAgKE1pc3NlZCBvbmUuKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKaW5k
ZXggZGY0Y2VjZGE4OWQxMGFjMDcxMzBjMGNhZTEwMzMxOWM0MTZjYWQzOS4uZmMzMjczYjIxYTlj
YzNkZTZmMTI0NDJhODBjMGY1NjhhZTcyOTVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCkBAIC03MCw3ICs3MCwxMiBA
QCBjbGFzcyBXZWJWaWV3OwogLy8gR3JhcGhpY3NDb250ZXh0M0QgaW4gb3JkZXIgdG8gaW1wbGVt
ZW50IFdlYkdMLiBOZWFybHkgYWxsIG9mIHRoZQogLy8gbWV0aG9kcyBleHBvc2VkIG9uIHRoaXMg
aW50ZXJmYWNlIG1hcCBkaXJlY3RseSB0byBlbnRyeSBwb2ludHMgaW4KIC8vIHRoZSBPcGVuR0wg
RVMgMi4wIEFQSS4KLQorLy8KKy8vIENyZWF0aW5nIGEgV2ViR3JhcGhpY3NDb250ZXh0IGRvZXMg
bm90IG1ha2UgaXQgY3VycmVudCwgb3IgZ3VhcmFudGVlCisvLyB0aGF0IHRoZSBjb250ZXh0IGhh
cyBiZWVuIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LiBVc2UKKy8vIG1ha2VDb250ZXh0Q3VycmVudCgp
IHRvIGNvbXBsZXRlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBjb250ZXh0LCB0cmVhdGluZworLy8g
YSBmYWxzZSByZXR1cm4gdmFsdWUgYXMgaW5kaWNhdGlvbiB0aGF0IHRoZSBjb250ZXh0IGNvdWxk
IG5vdCBiZSBjcmVhdGVkCisvLyBzdWNjZXNzZnVsbHkuCiBjbGFzcyBXZWJHcmFwaGljc0NvbnRl
eHQzRCA6IHB1YmxpYyBXZWJOb25Db3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHZh
bHVlIGZyb20gZ2V0QWN0aXZlVW5pZm9ybSBhbmQgZ2V0QWN0aXZlQXR0cmliLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVt
LmNwcAppbmRleCAwN2FkMzRmMTE1YTk1NDYzMzMzZjdiN2YxM2Y5YzcxYmRiOTMxNWRhLi5mM2I1
NTU3MWM1M2I3NmQ3NTA2NjE2NmM2ZjNiNjJlNTYxODhhOWYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcApA
QCAtMTE5LDExICsxMTksMTQgQEAgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlKFdlYktpdDo6V2UKICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSh3ZWJWaWV3SW1wbCwgd2ViQ29u
dGV4dCkpOwogfQogCi1QYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KFBhc3NPd25Q
dHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gd2ViQ29udGV4dCwgR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKK1Bhc3NSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
RnJvbVdlYkNvbnRleHQoUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiB3
ZWJDb250ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRv
dyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxl
LCBUaHJlYWRVc2FnZSB0aHJlYWRVc2FnZSkKIHsKICAgICBDaHJvbWUqIGNocm9tZSA9IHN0YXRp
Y19jYXN0PENocm9tZSo+KGhvc3RXaW5kb3cpOwogICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIHdl
YlZpZXdJbXBsID0gY2hyb21lID8gc3RhdGljX2Nhc3Q8V2ViS2l0OjpXZWJWaWV3SW1wbCo+KGNo
cm9tZS0+Y2xpZW50KCktPndlYlZpZXcoKSkgOiAwOwogCisgICAgaWYgKHRocmVhZFVzYWdlID09
IEZvclVzZU9uQ2FsbGluZ1RocmVhZCAmJiAhd2ViQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCisgICAgICAgIHJldHVybiAwOworCiAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZT4gcHJpdiA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlKHdlYlZpZXdJbXBs
LCB3ZWJDb250ZXh0KTsKICAgICBpZiAoIXByaXYpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTM0
LDYgKzEzNyw0MSBAQCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZybwogICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZSgpOwogfQogCituYW1lc3BhY2UgeworCitQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBjcmVhdGVHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMg
YXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJT
dHlsZSByZW5kZXJTdHlsZSwgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpUaHJlYWRVc2FnZSB0
aHJlYWRVc2FnZSkKK3sKKyAgICBib29sIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93ID0gcmVu
ZGVyU3R5bGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93
OworCisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyB3ZWJBdHRy
aWJ1dGVzOworICAgIHdlYkF0dHJpYnV0ZXMuYWxwaGEgPSBhdHRycy5hbHBoYTsKKyAgICB3ZWJB
dHRyaWJ1dGVzLmRlcHRoID0gYXR0cnMuZGVwdGg7CisgICAgd2ViQXR0cmlidXRlcy5zdGVuY2ls
ID0gYXR0cnMuc3RlbmNpbDsKKyAgICB3ZWJBdHRyaWJ1dGVzLmFudGlhbGlhcyA9IGF0dHJzLmFu
dGlhbGlhczsKKyAgICB3ZWJBdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSA9IGF0dHJzLnBy
ZW11bHRpcGxpZWRBbHBoYTsKKyAgICB3ZWJBdHRyaWJ1dGVzLmNhblJlY292ZXJGcm9tQ29udGV4
dExvc3MgPSBhdHRycy5jYW5SZWNvdmVyRnJvbUNvbnRleHRMb3NzOworICAgIHdlYkF0dHJpYnV0
ZXMubm9FeHRlbnNpb25zID0gYXR0cnMubm9FeHRlbnNpb25zOworICAgIHdlYkF0dHJpYnV0ZXMu
c2hhcmVSZXNvdXJjZXMgPSBhdHRycy5zaGFyZVJlc291cmNlczsKKyAgICBPd25QdHI8V2ViS2l0
OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gd2ViQ29udGV4dCA9IGFkb3B0UHRyKFdlYktpdDo6d2Vi
S2l0UGxhdGZvcm1TdXBwb3J0KCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dDNEKCkpOworICAgIGlm
ICghd2ViQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBDaHJvbWUqIGNocm9tZSA9
IHN0YXRpY19jYXN0PENocm9tZSo+KGhvc3RXaW5kb3cpOworICAgIFdlYktpdDo6V2ViVmlld0lt
cGwqIHdlYlZpZXdJbXBsID0gY2hyb21lID8gc3RhdGljX2Nhc3Q8V2ViS2l0OjpXZWJWaWV3SW1w
bCo+KGNocm9tZS0+Y2xpZW50KCktPndlYlZpZXcoKSkgOiAwOworCisgICAgaWYgKCF3ZWJDb250
ZXh0LT5pbml0aWFsaXplKHdlYkF0dHJpYnV0ZXMsIHdlYlZpZXdJbXBsLCByZW5kZXJEaXJlY3Rs
eVRvSG9zdFdpbmRvdykpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQod2Vi
Q29udGV4dC5yZWxlYXNlKCksIGF0dHJzLCBob3N0V2luZG93LCByZW5kZXJTdHlsZSwgdGhyZWFk
VXNhZ2UpOworfQorCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKworUGFzc1JlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRGb3JBbm90aGVyVGhyZWFkKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJz
LCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUg
cmVuZGVyU3R5bGUpCit7CisgICAgcmV0dXJuIGNyZWF0ZUdyYXBoaWNzQ29udGV4dChhdHRycywg
aG9zdFdpbmRvdywgcmVuZGVyU3R5bGUsIEZvclVzZU9uQW5vdGhlclRocmVhZCk7Cit9CisKIFdl
YktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0
cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewog
ICAgIGlmICghY29udGV4dCkKQEAgLTk4NSwyOCArMTAyMyw3IEBAIEdyYXBoaWNzQ29udGV4dDNE
Ojp+R3JhcGhpY3NDb250ZXh0M0QoKQogCiBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0
dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5
bGUgcmVuZGVyU3R5bGUpCiB7Ci0gICAgYm9vbCByZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyA9
IHJlbmRlclN0eWxlID09IFJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93OwotCi0gICAgV2ViS2l0
OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyB3ZWJBdHRyaWJ1dGVzOwotICAgIHdl
YkF0dHJpYnV0ZXMuYWxwaGEgPSBhdHRycy5hbHBoYTsKLSAgICB3ZWJBdHRyaWJ1dGVzLmRlcHRo
ID0gYXR0cnMuZGVwdGg7Ci0gICAgd2ViQXR0cmlidXRlcy5zdGVuY2lsID0gYXR0cnMuc3RlbmNp
bDsKLSAgICB3ZWJBdHRyaWJ1dGVzLmFudGlhbGlhcyA9IGF0dHJzLmFudGlhbGlhczsKLSAgICB3
ZWJBdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSA9IGF0dHJzLnByZW11bHRpcGxpZWRBbHBo
YTsKLSAgICB3ZWJBdHRyaWJ1dGVzLmNhblJlY292ZXJGcm9tQ29udGV4dExvc3MgPSBhdHRycy5j
YW5SZWNvdmVyRnJvbUNvbnRleHRMb3NzOwotICAgIHdlYkF0dHJpYnV0ZXMubm9FeHRlbnNpb25z
ID0gYXR0cnMubm9FeHRlbnNpb25zOwotICAgIHdlYkF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMg
PSBhdHRycy5zaGFyZVJlc291cmNlczsKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRD4gd2ViQ29udGV4dCA9IGFkb3B0UHRyKFdlYktpdDo6d2ViS2l0UGxhdGZvcm1TdXBw
b3J0KCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dDNEKCkpOwotICAgIGlmICghd2ViQ29udGV4dCkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBDaHJvbWUqIGNocm9tZSA9IHN0YXRpY19jYXN0PENo
cm9tZSo+KGhvc3RXaW5kb3cpOwotICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIHdlYlZpZXdJbXBs
ID0gY2hyb21lID8gc3RhdGljX2Nhc3Q8V2ViS2l0OjpXZWJWaWV3SW1wbCo+KGNocm9tZS0+Y2xp
ZW50KCktPndlYlZpZXcoKSkgOiAwOwotCi0gICAgaWYgKCF3ZWJDb250ZXh0LT5pbml0aWFsaXpl
KHdlYkF0dHJpYnV0ZXMsIHdlYlZpZXdJbXBsLCByZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQod2ViQ29udGV4dC5yZWxlYXNl
KCksIGF0dHJzLCBob3N0V2luZG93LCByZW5kZXJTdHlsZSk7CisgICAgcmV0dXJuIGNyZWF0ZUdy
YXBoaWNzQ29udGV4dChhdHRycywgaG9zdFdpbmRvdywgcmVuZGVyU3R5bGUsIEZvclVzZU9uVGhp
c1RocmVhZCk7CiB9CiAKIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR3JhcGhpY3NDb250ZXh0
M0Q6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAppbmRleCA4Yjg4
OTcyYzIwNjJlZTcwZTQxZmE0M2ExODk1MGI2ZmViYjUxZTZmLi5mMjg4NmU3MjU2NmRjOTM3MGIz
YmU0N2FkNGVjOWQ1MzhlZjFhMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaApAQCAtNTcsOCArNTcsMjAgQEAgY2xh
c3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093
blB0cjxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+IGNyZWF0ZShXZWJLaXQ6OldlYlZpZXdJbXBs
KiwgUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPik7CiAKKyAgICBlbnVt
IFRocmVhZFVzYWdlIHsKKyAgICAgICAgRm9yVXNlT25UaGlzVGhyZWFkLAorICAgICAgICBGb3JV
c2VPbkFub3RoZXJUaHJlYWQsCisgICAgfTsKKworICAgIC8vIGNyZWF0ZUdyYXBoaWNzQ29udGV4
dEZvckFub3RoZXJUaHJlYWQgaXMgZXF1aXZhbGVudCB0bworICAgIC8vIEdyYXBoaWNzQ29udGV4
dDNEOjpjcmVhdGUsIGJ1dCB3aWxsIHNraXAgbWFraW5nIHRoZSBjb250ZXh0CisgICAgLy8gY3Vy
cmVudC4gQ2FsbGVycyBtdXN0IG1ha2UgdGhlIGNvbnRleHQgY3VycmVudCBiZWZvcmUgdXNpbmcg
aXQgQU5EIGNoZWNrCisgICAgLy8gdGhhdCB0aGUgY29udGV4dCB3YXMgY3JlYXRlZCBzdWNjZXNz
ZnVsbHkgdmlhIENvbnRleHRMb3N0LiBPbmNlIG1hZGUKKyAgICAvLyBjdXJyZW50IG9uIGEgdGhy
ZWFkLCB0aGUgY29udGV4dCBjYW5ub3QgYmUgdXNlZCBvbiBhbnkgb3RoZXIgdGhyZWFkLgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVHcmFwaGljc0NvbnRl
eHRGb3JBbm90aGVyVGhyZWFkKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzLCBIb3N0V2lu
ZG93KiwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlKTsKKwogICAgIC8vIFVzZWQgaW4g
dGVzdHMgdG8gY3JlYXRlIGEgR3JhcGhpY3NDb250ZXh0M0QgZnJvbSBhIG1vY2tlZCBXZWJHcmFw
aGljc0NvbnRleHQzRC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoUGFzc093blB0cjxXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEPiwgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMsIEhvc3RX
aW5kb3cqLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUpOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29u
dGV4dChQYXNzT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+LCBHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5k
ZXJTdHlsZSwgVGhyZWFkVXNhZ2UpOwogCiAgICAgfkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNzM4
ZDdhM2Q5NWRjNTNlZjgxMmVkNDM5ZDJiMTljMThjODJiZjdjOS4uNzA2ZDU4Mjg0ZTE1MTE4Njc4
ZWJkMjBlYTE1ODQ0MTYyMWIxNmJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcApAQCAtMjY5MSw3ICsyNjkxLDExIEBAIFBhc3NSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IFdlYlZpZXdJbXBsOjpjcmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCkKIHsK
ICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBtX3RlbXBvcmFyeU9uc2Ny
ZWVuR3JhcGhpY3NDb250ZXh0M0QucmVsZWFzZSgpOwogICAgIGlmICghY29udGV4dCkgeworI2lm
IFVTRShUSFJFQURFRF9DT01QT1NJVElORykKKyAgICAgICAgY29udGV4dCA9IEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0Rm9yQW5vdGhlclRocmVhZChnZXRD
b21wb3NpdG9yQ29udGV4dEF0dHJpYnV0ZXMoKSwgbV9wYWdlLT5jaHJvbWUoKSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKKyNlbHNlCiAgICAgICAgIGNv
bnRleHQgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGdldENvbXBvc2l0b3JDb250ZXh0QXR0
cmlidXRlcygpLCBtX3BhZ2UtPmNocm9tZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGly
ZWN0bHlUb0hvc3RXaW5kb3cpOworI2VuZGlmCiAgICAgfQogICAgIHJldHVybiBjb250ZXh0Owog
fQpAQCAtMjc1OSw3ICsyNzYzLDExIEBAIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBXZWJWaWV3SW1w
bDo6Z3JhcGhpY3NDb250ZXh0M0QoKQogICAgICAgICAgICAgaWYgKHdlYkNvbnRleHQgJiYgIXdl
YkNvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gd2ViQ29u
dGV4dDsKICAgICAgICAgfQorI2lmIFVTRShUSFJFQURFRF9DT01QT1NJVElORykKKyAgICAgICAg
bV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4dDNEID0gR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGb3JBbm90aGVyVGhyZWFkKGdldENvbXBvc2l0
b3JDb250ZXh0QXR0cmlidXRlcygpLCBtX3BhZ2UtPmNocm9tZSgpLCBHcmFwaGljc0NvbnRleHQz
RDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOworI2Vsc2UKICAgICAgICAgbV90ZW1wb3Jh
cnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4dDNEID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShn
ZXRDb21wb3NpdG9yQ29udGV4dEF0dHJpYnV0ZXMoKSwgbV9wYWdlLT5jaHJvbWUoKSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKKyNlbmRpZgogICAgICAg
ICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250
ZXh0M0QobV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4dDNELmdldCgpKTsKICAgICB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0dy
YXBoaWNzQ29udGV4dDNEVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01v
Y2tHcmFwaGljc0NvbnRleHQzRFRlc3QuY3BwCmluZGV4IDJkMzY1Mzc5NTg3ZjQ4ZDc3NjEwNzlj
NjBkNjE5NTQ2NWUwYWI0ODUuLjJlMmUyOTFlODU1YzYwNjNkMjk4Nzc1ZTk1M2RlYzAyZTUxZjM1
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0dyYXBoaWNz
Q29udGV4dDNEVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2Nr
R3JhcGhpY3NDb250ZXh0M0RUZXN0LmNwcApAQCAtNTMsMTAgKzUzLDkgQEAgcHJpdmF0ZToKIFRF
U1QoTW9ja0dyYXBoaWNzQ29udGV4dDNEVGVzdCwgQ2FuT3ZlcnJpZGVNYW51YWxseSkKIHsKICAg
ICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyczsKLSAgICBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdy
YXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGcmFtZUNvdW50aW5nQ29u
dGV4dCgpKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9z
dFdpbmRvdyk7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChh
ZG9wdFB0cihuZXcgRnJhbWVDb3VudGluZ0NvbnRleHQoKSksIGF0dHJzLCAwLCBHcmFwaGljc0Nv
bnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3csIGZhbHNlKTsKICAgICBGcmFtZUNv
dW50aW5nQ29udGV4dCYgbW9ja0NvbnRleHQgPSAqc3RhdGljX2Nhc3Q8RnJhbWVDb3VudGluZ0Nv
bnRleHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRl
eHQzRChjb250ZXh0LmdldCgpKSk7CiAKLSAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspIHsKICAgICAgICAgY29udGV4dC0+
Y2xlYXJDb2xvcigwLCAwLCAwLCAxKTsKICAgICAgICAgY29udGV4dC0+cHJlcGFyZVRleHR1cmUo
KTsKQEAgLTY5LDEzICs2OCwxNCBAQCBURVNUKE1vY2tHcmFwaGljc0NvbnRleHQzRFRlc3QsIENh
bk92ZXJyaWRlTWFudWFsbHkpCiAKIGNsYXNzIEdNb2NrQ29udGV4dCA6IHB1YmxpYyBNb2NrV2Vi
R3JhcGhpY3NDb250ZXh0M0QgewogcHVibGljOgorICAgIE1PQ0tfTUVUSE9EMChtYWtlQ29udGV4
dEN1cnJlbnQsIGJvb2woKSk7CiAgICAgTU9DS19NRVRIT0QwKGdldEVycm9yLCBXR0MzRGVudW0o
KSk7CiB9OwogCiBURVNUKE1vY2tHcmFwaGljc0NvbnRleHQzRFRlc3QsIENhblVzZUdNb2NrKQog
ewogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOwotICAgIFJlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEdNb2NrQ29udGV4
dCgpKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdp
bmRvdyk7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9w
dFB0cihuZXcgR01vY2tDb250ZXh0KCkpLCBhdHRycywgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJl
bmRlckRpcmVjdGx5VG9Ib3N0V2luZG93LCBmYWxzZSk7CiAgICAgR01vY2tDb250ZXh0JiBtb2Nr
Q29udGV4dCA9ICpzdGF0aWNfY2FzdDxHTW9ja0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChjb250ZXh0LmdldCgpKSk7CiAKICAg
ICBFWFBFQ1RfQ0FMTChtb2NrQ29udGV4dCwgZ2V0RXJyb3IoKSkKQEAgLTg4LDMgKzg4LDIyIEBA
IFRFU1QoTW9ja0dyYXBoaWNzQ29udGV4dDNEVGVzdCwgQ2FuVXNlR01vY2spCiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCAxMDsgaSsrKQogICAgICAgICBFWFBFQ1RfRVEoKGludCljb250ZXh0LT5n
ZXRFcnJvcigpLCAzMTQpOwogfQorCisKK1RFU1QoTW9ja0dyYXBoaWNzQ29udGV4dDNEVGVzdCwg
Q29udGV4dE1hZGVDdXJyZW50KQoreworICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVz
IGF0dHJzOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRv
cHRQdHIobmV3IEdNb2NrQ29udGV4dCgpKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpS
ZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdywgZmFsc2UpOworICAgIEdNb2NrQ29udGV4dCYgbW9j
a0NvbnRleHQgPSAqc3RhdGljX2Nhc3Q8R01vY2tDb250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoY29udGV4dC5nZXQoKSkpOworCisg
ICAgRVhQRUNUX0NBTEwobW9ja0NvbnRleHQsIG1ha2VDb250ZXh0Q3VycmVudCgpKTsKK30KKwor
VEVTVChNb2NrR3JhcGhpY3NDb250ZXh0M0RUZXN0LCBEZWxheWVkQ29udGV4dE5vdE1hZGVDdXJy
ZW50KQoreworICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOworICAgIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEdNb2Nr
Q29udGV4dCgpKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRv
SG9zdFdpbmRvdywgZmFsc2UpOworICAgIEdNb2NrQ29udGV4dCYgbW9ja0NvbnRleHQgPSAqc3Rh
dGljX2Nhc3Q8R01vY2tDb250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0
V2ViR3JhcGhpY3NDb250ZXh0M0QoY29udGV4dC5nZXQoKSkpOworCisgICAgRVhQRUNUX0NBTEwo
bW9ja0NvbnRleHQsIG1ha2VDb250ZXh0Q3VycmVudCgpKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106968</attachid>
            <date>2011-09-09 23:46:10 -0700</date>
            <delta_ts>2011-09-10 14:15:10 -0700</delta_ts>
            <desc>Make it work, plus tests.</desc>
            <filename>bug-67832-20110909234609.patch</filename>
            <type>text/plain</type>
            <size>16080</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ4MzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
YjEzN2E5YTdhNjU4NGE2YzFlMjE2MWU5NTcyNzBjOGE4NDE1MTkxZC4uNWNhMzJhOTA0NjE5NmFj
OTRjNjZlYWRmMTU3ZDFiYzBkYjM0YjM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAxMS0wOS0wOCAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOmNyZWF0
ZUdyYXBoaWNzQ29udGV4dEZvckFub3RoZXJUaHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3ODMyCisKKyAgICAgICAgVGhlIGNvbXBvc2l0b3Ig
dGhyZWFkIG5lZWRzIHRvIGNyZWF0ZSBhIEdyYXBoaWNzQ29udGV4dDNEIHdpdGhvdXQKKyAgICAg
ICAgYWN0dWFsbHkgbWFraW5nIGl0IGN1cnJlbnQuIEluIHByZXZpb3VzIGF0dGVtcHRzIGF0IGRv
aW5nIHRoaXMsCisgICAgICAgIHdlIG1vZGlmaWVkIGFsbCBncmFwaGljczNEIGNyZWF0aW9uIHRv
IG5vdCBtYWtlIHRoZSBjb250ZXh0cyBjdXJyZW50LAorICAgICAgICBidXQgdGhpcyBwcm92ZSB0
byBiZSBzaG9ja2luZ2x5IGZyYWdpbGUuIFNpbmNlIHRoaXMgaXMgYSB2ZXJ5IENocm9taXVtLXNw
ZWNpZmljCisgICAgICAgIGJlaGF2aW9yLCB0aGlzIHBhdGNoIG1ha2VzIGNyZWF0aW9uRm9yQW5v
dGhlclRocmVhZCBhIG1ldGhvZCBvbiB0aGUgcHJpdmF0ZQorICAgICAgICBHcmFwaGljc0NvbnRl
eHQzRCBpbnRlcmZhY2UuIEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUgYmVoYXZlcyBhcyB1c3Vh
bC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNy
Yy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRGb3JBbm90aGVyVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGUpOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6Y3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpncmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogdGVzdHMvTW9j
a0dyYXBoaWNzQ29udGV4dDNEVGVzdC5jcHA6CisgICAgICAgIChURVNUKToKKwogMjAxMS0wOS0w
OCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEFub3RoZXIgYXR0
ZW1wdCB0byBmaXggdGhlIENocm9taXVtIGJ1aWxkLiAgKE1pc3NlZCBvbmUuKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKaW5k
ZXggZGY0Y2VjZGE4OWQxMGFjMDcxMzBjMGNhZTEwMzMxOWM0MTZjYWQzOS4uZmMzMjczYjIxYTlj
YzNkZTZmMTI0NDJhODBjMGY1NjhhZTcyOTVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCkBAIC03MCw3ICs3MCwxMiBA
QCBjbGFzcyBXZWJWaWV3OwogLy8gR3JhcGhpY3NDb250ZXh0M0QgaW4gb3JkZXIgdG8gaW1wbGVt
ZW50IFdlYkdMLiBOZWFybHkgYWxsIG9mIHRoZQogLy8gbWV0aG9kcyBleHBvc2VkIG9uIHRoaXMg
aW50ZXJmYWNlIG1hcCBkaXJlY3RseSB0byBlbnRyeSBwb2ludHMgaW4KIC8vIHRoZSBPcGVuR0wg
RVMgMi4wIEFQSS4KLQorLy8KKy8vIENyZWF0aW5nIGEgV2ViR3JhcGhpY3NDb250ZXh0IGRvZXMg
bm90IG1ha2UgaXQgY3VycmVudCwgb3IgZ3VhcmFudGVlCisvLyB0aGF0IHRoZSBjb250ZXh0IGhh
cyBiZWVuIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LiBVc2UKKy8vIG1ha2VDb250ZXh0Q3VycmVudCgp
IHRvIGNvbXBsZXRlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBjb250ZXh0LCB0cmVhdGluZworLy8g
YSBmYWxzZSByZXR1cm4gdmFsdWUgYXMgaW5kaWNhdGlvbiB0aGF0IHRoZSBjb250ZXh0IGNvdWxk
IG5vdCBiZSBjcmVhdGVkCisvLyBzdWNjZXNzZnVsbHkuCiBjbGFzcyBXZWJHcmFwaGljc0NvbnRl
eHQzRCA6IHB1YmxpYyBXZWJOb25Db3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHZh
bHVlIGZyb20gZ2V0QWN0aXZlVW5pZm9ybSBhbmQgZ2V0QWN0aXZlQXR0cmliLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVt
LmNwcAppbmRleCAwN2FkMzRmMTE1YTk1NDYzMzMzZjdiN2YxM2Y5YzcxYmRiOTMxNWRhLi4wYTFh
YTQyNjczNzFkMjRhMGFhMjZmN2ZkMTUwOTUxYmU2NGRmZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcApA
QCAtMTE5LDExICsxMTksMTQgQEAgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlKFdlYktpdDo6V2UKICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSh3ZWJWaWV3SW1wbCwgd2ViQ29u
dGV4dCkpOwogfQogCi1QYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KFBhc3NPd25Q
dHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gd2ViQ29udGV4dCwgR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKK1Bhc3NSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
RnJvbVdlYkNvbnRleHQoUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiB3
ZWJDb250ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRv
dyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxl
LCBUaHJlYWRVc2FnZSB0aHJlYWRVc2FnZSkKIHsKICAgICBDaHJvbWUqIGNocm9tZSA9IHN0YXRp
Y19jYXN0PENocm9tZSo+KGhvc3RXaW5kb3cpOwogICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIHdl
YlZpZXdJbXBsID0gY2hyb21lID8gc3RhdGljX2Nhc3Q8V2ViS2l0OjpXZWJWaWV3SW1wbCo+KGNo
cm9tZS0+Y2xpZW50KCktPndlYlZpZXcoKSkgOiAwOwogCisgICAgaWYgKHRocmVhZFVzYWdlID09
IEZvclVzZU9uVGhpc1RocmVhZCAmJiAhd2ViQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CisgICAgICAgIHJldHVybiAwOworCiAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZT4gcHJpdiA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlKHdlYlZpZXdJbXBsLCB3
ZWJDb250ZXh0KTsKICAgICBpZiAoIXByaXYpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTM0LDYg
KzEzNyw0MSBAQCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZybwogICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZSgpOwogfQogCituYW1lc3BhY2UgeworCitQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjcmVhdGVHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0
cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHls
ZSByZW5kZXJTdHlsZSwgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpUaHJlYWRVc2FnZSB0aHJl
YWRVc2FnZSkKK3sKKyAgICBib29sIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93ID0gcmVuZGVy
U3R5bGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93Owor
CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyB3ZWJBdHRyaWJ1
dGVzOworICAgIHdlYkF0dHJpYnV0ZXMuYWxwaGEgPSBhdHRycy5hbHBoYTsKKyAgICB3ZWJBdHRy
aWJ1dGVzLmRlcHRoID0gYXR0cnMuZGVwdGg7CisgICAgd2ViQXR0cmlidXRlcy5zdGVuY2lsID0g
YXR0cnMuc3RlbmNpbDsKKyAgICB3ZWJBdHRyaWJ1dGVzLmFudGlhbGlhcyA9IGF0dHJzLmFudGlh
bGlhczsKKyAgICB3ZWJBdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSA9IGF0dHJzLnByZW11
bHRpcGxpZWRBbHBoYTsKKyAgICB3ZWJBdHRyaWJ1dGVzLmNhblJlY292ZXJGcm9tQ29udGV4dExv
c3MgPSBhdHRycy5jYW5SZWNvdmVyRnJvbUNvbnRleHRMb3NzOworICAgIHdlYkF0dHJpYnV0ZXMu
bm9FeHRlbnNpb25zID0gYXR0cnMubm9FeHRlbnNpb25zOworICAgIHdlYkF0dHJpYnV0ZXMuc2hh
cmVSZXNvdXJjZXMgPSBhdHRycy5zaGFyZVJlc291cmNlczsKKyAgICBPd25QdHI8V2ViS2l0OjpX
ZWJHcmFwaGljc0NvbnRleHQzRD4gd2ViQ29udGV4dCA9IGFkb3B0UHRyKFdlYktpdDo6d2ViS2l0
UGxhdGZvcm1TdXBwb3J0KCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dDNEKCkpOworICAgIGlmICgh
d2ViQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBDaHJvbWUqIGNocm9tZSA9IHN0
YXRpY19jYXN0PENocm9tZSo+KGhvc3RXaW5kb3cpOworICAgIFdlYktpdDo6V2ViVmlld0ltcGwq
IHdlYlZpZXdJbXBsID0gY2hyb21lID8gc3RhdGljX2Nhc3Q8V2ViS2l0OjpXZWJWaWV3SW1wbCo+
KGNocm9tZS0+Y2xpZW50KCktPndlYlZpZXcoKSkgOiAwOworCisgICAgaWYgKCF3ZWJDb250ZXh0
LT5pbml0aWFsaXplKHdlYkF0dHJpYnV0ZXMsIHdlYlZpZXdJbXBsLCByZW5kZXJEaXJlY3RseVRv
SG9zdFdpbmRvdykpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQod2ViQ29u
dGV4dC5yZWxlYXNlKCksIGF0dHJzLCBob3N0V2luZG93LCByZW5kZXJTdHlsZSwgdGhyZWFkVXNh
Z2UpOworfQorCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKworUGFzc1JlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRl
eHRGb3JBbm90aGVyVGhyZWFkKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBI
b3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVu
ZGVyU3R5bGUpCit7CisgICAgcmV0dXJuIGNyZWF0ZUdyYXBoaWNzQ29udGV4dChhdHRycywgaG9z
dFdpbmRvdywgcmVuZGVyU3R5bGUsIEZvclVzZU9uQW5vdGhlclRocmVhZCk7Cit9CisKIFdlYktp
dDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFj
dFdlYkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewogICAg
IGlmICghY29udGV4dCkKQEAgLTk4NSwyOCArMTAyMyw3IEBAIEdyYXBoaWNzQ29udGV4dDNEOjp+
R3JhcGhpY3NDb250ZXh0M0QoKQogCiBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFw
aGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJz
LCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUg
cmVuZGVyU3R5bGUpCiB7Ci0gICAgYm9vbCByZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyA9IHJl
bmRlclN0eWxlID09IFJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93OwotCi0gICAgV2ViS2l0OjpX
ZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyB3ZWJBdHRyaWJ1dGVzOwotICAgIHdlYkF0
dHJpYnV0ZXMuYWxwaGEgPSBhdHRycy5hbHBoYTsKLSAgICB3ZWJBdHRyaWJ1dGVzLmRlcHRoID0g
YXR0cnMuZGVwdGg7Ci0gICAgd2ViQXR0cmlidXRlcy5zdGVuY2lsID0gYXR0cnMuc3RlbmNpbDsK
LSAgICB3ZWJBdHRyaWJ1dGVzLmFudGlhbGlhcyA9IGF0dHJzLmFudGlhbGlhczsKLSAgICB3ZWJB
dHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSA9IGF0dHJzLnByZW11bHRpcGxpZWRBbHBoYTsK
LSAgICB3ZWJBdHRyaWJ1dGVzLmNhblJlY292ZXJGcm9tQ29udGV4dExvc3MgPSBhdHRycy5jYW5S
ZWNvdmVyRnJvbUNvbnRleHRMb3NzOwotICAgIHdlYkF0dHJpYnV0ZXMubm9FeHRlbnNpb25zID0g
YXR0cnMubm9FeHRlbnNpb25zOwotICAgIHdlYkF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMgPSBh
dHRycy5zaGFyZVJlc291cmNlczsKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRD4gd2ViQ29udGV4dCA9IGFkb3B0UHRyKFdlYktpdDo6d2ViS2l0UGxhdGZvcm1TdXBwb3J0
KCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dDNEKCkpOwotICAgIGlmICghd2ViQ29udGV4dCkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBDaHJvbWUqIGNocm9tZSA9IHN0YXRpY19jYXN0PENocm9t
ZSo+KGhvc3RXaW5kb3cpOwotICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0g
Y2hyb21lID8gc3RhdGljX2Nhc3Q8V2ViS2l0OjpXZWJWaWV3SW1wbCo+KGNocm9tZS0+Y2xpZW50
KCktPndlYlZpZXcoKSkgOiAwOwotCi0gICAgaWYgKCF3ZWJDb250ZXh0LT5pbml0aWFsaXplKHdl
YkF0dHJpYnV0ZXMsIHdlYlZpZXdJbXBsLCByZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpCi0g
ICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQod2ViQ29udGV4dC5yZWxlYXNlKCks
IGF0dHJzLCBob3N0V2luZG93LCByZW5kZXJTdHlsZSk7CisgICAgcmV0dXJuIGNyZWF0ZUdyYXBo
aWNzQ29udGV4dChhdHRycywgaG9zdFdpbmRvdywgcmVuZGVyU3R5bGUsIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Rm9yVXNlT25UaGlzVGhyZWFkKTsKIH0KIAogUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQzRCBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZS5oCmluZGV4IDhiODg5NzJjMjA2MmVlNzBlNDFmYTQzYTE4OTUwYjZmZWJiNTFl
NmYuLmYyODg2ZTcyNTY2ZGM5MzcwYjNiZTQ3YWQ0ZWM5ZDUzOGVmMWExMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5o
CkBAIC01Nyw4ICs1NywyMCBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUgewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4gY3Jl
YXRlKFdlYktpdDo6V2ViVmlld0ltcGwqLCBQYXNzT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0Q+KTsKIAorICAgIGVudW0gVGhyZWFkVXNhZ2UgeworICAgICAgICBGb3JVc2VPblRo
aXNUaHJlYWQsCisgICAgICAgIEZvclVzZU9uQW5vdGhlclRocmVhZCwKKyAgICB9OworCisgICAg
Ly8gY3JlYXRlR3JhcGhpY3NDb250ZXh0Rm9yQW5vdGhlclRocmVhZCBpcyBlcXVpdmFsZW50IHRv
CisgICAgLy8gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZSwgYnV0IHdpbGwgc2tpcCBtYWtpbmcg
dGhlIGNvbnRleHQKKyAgICAvLyBjdXJyZW50LiBDYWxsZXJzIG11c3QgbWFrZSB0aGUgY29udGV4
dCBjdXJyZW50IGJlZm9yZSB1c2luZyBpdCBBTkQgY2hlY2sKKyAgICAvLyB0aGF0IHRoZSBjb250
ZXh0IHdhcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseSB2aWEgQ29udGV4dExvc3QuIE9uY2UgbWFkZQor
ICAgIC8vIGN1cnJlbnQgb24gYSB0aHJlYWQsIHRoZSBjb250ZXh0IGNhbm5vdCBiZSB1c2VkIG9u
IGFueSBvdGhlciB0aHJlYWQuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEZvckFub3RoZXJUaHJlYWQoR3JhcGhpY3NDb250ZXh0
M0Q6OkF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5
bGUpOworCiAgICAgLy8gVXNlZCBpbiB0ZXN0cyB0byBjcmVhdGUgYSBHcmFwaGljc0NvbnRleHQz
RCBmcm9tIGEgbW9ja2VkIFdlYkdyYXBoaWNzQ29udGV4dDNELgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4
dChQYXNzT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+LCBHcmFwaGljc0NvbnRl
eHQzRDo6QXR0cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJT
dHlsZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUdy
YXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRD4sIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzLCBIb3N0V2luZG93Kiwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlLCBUaHJlYWRVc2FnZSk7CiAKICAgICB+R3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcAppbmRleCA3MzhkN2EzZDk1ZGM1M2VmODEyZWQ0MzlkMmIxOWMxOGM4MmJm
N2M5Li43MDZkNTgyODRlMTUxMTg2NzhlYmQyMGVhMTU4NDQxNjIxYjE2YmQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0yNjkxLDcgKzI2OTEsMTEg
QEAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gV2ViVmlld0ltcGw6OmNyZWF0ZUxheWVy
VHJlZUhvc3RDb250ZXh0M0QoKQogewogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29u
dGV4dCA9IG1fdGVtcG9yYXJ5T25zY3JlZW5HcmFwaGljc0NvbnRleHQzRC5yZWxlYXNlKCk7CiAg
ICAgaWYgKCFjb250ZXh0KSB7CisjaWYgVVNFKFRIUkVBREVEX0NPTVBPU0lUSU5HKQorICAgICAg
ICBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRl
eHRGb3JBbm90aGVyVGhyZWFkKGdldENvbXBvc2l0b3JDb250ZXh0QXR0cmlidXRlcygpLCBtX3Bh
Z2UtPmNocm9tZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5k
b3cpOworI2Vsc2UKICAgICAgICAgY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUo
Z2V0Q29tcG9zaXRvckNvbnRleHRBdHRyaWJ1dGVzKCksIG1fcGFnZS0+Y2hyb21lKCksIEdyYXBo
aWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CisjZW5kaWYKICAgICB9
CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CkBAIC0yNzU5LDcgKzI3NjMsMTEgQEAgV2ViR3JhcGhp
Y3NDb250ZXh0M0QqIFdlYlZpZXdJbXBsOjpncmFwaGljc0NvbnRleHQzRCgpCiAgICAgICAgICAg
ICBpZiAod2ViQ29udGV4dCAmJiAhd2ViQ29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQogICAgICAg
ICAgICAgICAgIHJldHVybiB3ZWJDb250ZXh0OwogICAgICAgICB9CisjaWYgVVNFKFRIUkVBREVE
X0NPTVBPU0lUSU5HKQorICAgICAgICBtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3NDb250ZXh0
M0QgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZvckFu
b3RoZXJUaHJlYWQoZ2V0Q29tcG9zaXRvckNvbnRleHRBdHRyaWJ1dGVzKCksIG1fcGFnZS0+Y2hy
b21lKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7Cisj
ZWxzZQogICAgICAgICBtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3NDb250ZXh0M0QgPSBHcmFw
aGljc0NvbnRleHQzRDo6Y3JlYXRlKGdldENvbXBvc2l0b3JDb250ZXh0QXR0cmlidXRlcygpLCBt
X3BhZ2UtPmNocm9tZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RX
aW5kb3cpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3ND
b250ZXh0M0QuZ2V0KCkpOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9Nb2NrR3JhcGhpY3NDb250ZXh0M0RUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0dyYXBoaWNzQ29udGV4dDNEVGVzdC5jcHAKaW5kZXgg
MmQzNjUzNzk1ODdmNDhkNzc2MTA3OWM2MGQ2MTk1NDY1ZTBhYjQ4NS4uYTM3NDZjNzU0NGZlMzk1
YWNkNDlhZTYzYTA1ODFjMDAyMjQ4YTJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9Nb2NrR3JhcGhpY3NDb250ZXh0M0RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL01vY2tHcmFwaGljc0NvbnRleHQzRFRlc3QuY3BwCkBAIC01Mywx
MCArNTMsOSBAQCBwcml2YXRlOgogVEVTVChNb2NrR3JhcGhpY3NDb250ZXh0M0RUZXN0LCBDYW5P
dmVycmlkZU1hbnVhbGx5KQogewogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0
dHJzOwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQ
dHIobmV3IEZyYW1lQ291bnRpbmdDb250ZXh0KCkpLCBhdHRycywgMCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGcmFtZUNvdW50aW5nQ29udGV4dCgp
KSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRv
dywgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPblRoaXNUaHJlYWQpOwogICAgIEZy
YW1lQ291bnRpbmdDb250ZXh0JiBtb2NrQ29udGV4dCA9ICpzdGF0aWNfY2FzdDxGcmFtZUNvdW50
aW5nQ29udGV4dCo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNz
Q29udGV4dDNEKGNvbnRleHQuZ2V0KCkpKTsKIAotICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykgewogICAgICAgICBjb250
ZXh0LT5jbGVhckNvbG9yKDAsIDAsIDAsIDEpOwogICAgICAgICBjb250ZXh0LT5wcmVwYXJlVGV4
dHVyZSgpOwpAQCAtNzUsNyArNzQsNyBAQCBwdWJsaWM6CiBURVNUKE1vY2tHcmFwaGljc0NvbnRl
eHQzRFRlc3QsIENhblVzZUdNb2NrKQogewogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dGVzIGF0dHJzOwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQo
YWRvcHRQdHIobmV3IEdNb2NrQ29udGV4dCgpKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgR01vY2tDb250ZXh0KCkpLCBhdHRycywg
MCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93LCBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uVGhpc1RocmVhZCk7CiAgICAgR01vY2tDb250ZXh0
JiBtb2NrQ29udGV4dCA9ICpzdGF0aWNfY2FzdDxHTW9ja0NvbnRleHQqPihHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChjb250ZXh0LmdldCgpKSk7
CiAKICAgICBFWFBFQ1RfQ0FMTChtb2NrQ29udGV4dCwgZ2V0RXJyb3IoKSkKQEAgLTg4LDMgKzg3
LDQ4IEBAIFRFU1QoTW9ja0dyYXBoaWNzQ29udGV4dDNEVGVzdCwgQ2FuVXNlR01vY2spCiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKQogICAgICAgICBFWFBFQ1RfRVEoKGludCljb250
ZXh0LT5nZXRFcnJvcigpLCAzMTQpOwogfQorCitjbGFzcyBDb250ZXh0VGhhdENvdW50c01ha2VD
dXJyZW50cyA6IHB1YmxpYyBNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QgeworcHVibGljOgorICAg
IENvbnRleHRUaGF0Q291bnRzTWFrZUN1cnJlbnRzKCkgOiBtX21ha2VDdXJyZW50Q291bnQoMCkg
eyB9CisgICAgdmlydHVhbCBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpCisgICAgeworICAgICAg
ICBtX21ha2VDdXJyZW50Q291bnQrKzsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IGludCBtYWtlQ3VycmVudENvdW50KCkgeyByZXR1cm4gbV9tYWtlQ3VycmVudENvdW50OyB9Citw
cml2YXRlOgorICAgIGludCBtX21ha2VDdXJyZW50Q291bnQ7Cit9OworCisKK1RFU1QoTW9ja0dy
YXBoaWNzQ29udGV4dDNEVGVzdCwgQ29udGV4dEZvclRoaXNUaHJlYWRTaG91bGRNYWtlQ3VycmVu
dCkKK3sKKyAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyczsKKyAgICBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBDb250ZXh0
VGhhdENvdW50c01ha2VDdXJyZW50cygpKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpS
ZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpGb3JV
c2VPblRoaXNUaHJlYWQpOworICAgIEVYUEVDVF9UUlVFKGNvbnRleHQpOworICAgIENvbnRleHRU
aGF0Q291bnRzTWFrZUN1cnJlbnRzJiBtb2NrQ29udGV4dCA9ICpzdGF0aWNfY2FzdDxDb250ZXh0
VGhhdENvdW50c01ha2VDdXJyZW50cyo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFj
dFdlYkdyYXBoaWNzQ29udGV4dDNEKGNvbnRleHQuZ2V0KCkpKTsKKyAgICBFWFBFQ1RfRVEoMSwg
bW9ja0NvbnRleHQubWFrZUN1cnJlbnRDb3VudCgpKTsKK30KKworVEVTVChNb2NrR3JhcGhpY3ND
b250ZXh0M0RUZXN0LCBDb250ZXh0Rm9yQW5vdGhlclRocmVhZFNob3VsZE5vdE1ha2VDdXJyZW50
KQoreworICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOworICAgIFJlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IENvbnRleHRU
aGF0Q291bnRzTWFrZUN1cnJlbnRzKCkpLCBhdHRycywgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJl
bmRlckRpcmVjdGx5VG9Ib3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVz
ZU9uQW5vdGhlclRocmVhZCk7CisgICAgRVhQRUNUX1RSVUUoY29udGV4dCk7CisgICAgQ29udGV4
dFRoYXRDb3VudHNNYWtlQ3VycmVudHMmIG1vY2tDb250ZXh0ID0gKnN0YXRpY19jYXN0PENvbnRl
eHRUaGF0Q291bnRzTWFrZUN1cnJlbnRzKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRy
YWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoY29udGV4dC5nZXQoKSkpOworICAgIEVYUEVDVF9FUSgw
LCBtb2NrQ29udGV4dC5tYWtlQ3VycmVudENvdW50KCkpOworfQorCitjbGFzcyBDb250ZXh0V2l0
aE1ha2VDdXJyZW50VGhhdEZhaWxzIDogcHVibGljIE1vY2tXZWJHcmFwaGljc0NvbnRleHQzRCB7
CitwdWJsaWM6CisgICAgQ29udGV4dFdpdGhNYWtlQ3VycmVudFRoYXRGYWlscygpIHsgfQorICAg
IHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKSB7IHJldHVybiBmYWxzZTsgfQorfTsK
KworVEVTVChNb2NrR3JhcGhpY3NDb250ZXh0M0RUZXN0LCBDb250ZXh0Rm9yVGhpc1RocmVhZEZh
aWxzV2hlbk1ha2VDdXJyZW50RmFpbHMpCit7CisgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0ZXMgYXR0cnM7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4
dChhZG9wdFB0cihuZXcgQ29udGV4dFdpdGhNYWtlQ3VycmVudFRoYXRGYWlscygpKSwgYXR0cnMs
IDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdywgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPblRoaXNUaHJlYWQpOworICAgIEVYUEVDVF9GQUxT
RShjb250ZXh0KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L01vY2tXZWJHcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGE0NzIzZGExNDY0MzVhNTUzMmRjZDgz
YmVkYWJhN2NiNWRlYjM5ZWQuLjFlNGJkMDA4ZTNhODgxM2E4NGYwMDkxMjUyMTRhOTNhNjczYjEw
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja1dlYkdyYXBo
aWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrV2Vi
R3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBNb2NrV2ViR3JhcGhp
Y3NDb250ZXh0M0QgOiBwdWJsaWMgV2ViR3JhcGhpY3NDb250ZXh0M0QgewogcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKEF0dHJpYnV0ZXMsIFdlYlZpZXcqLCBib29sIHJlbmRl
ckRpcmVjdGx5VG9XZWJWaWV3KSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBib29s
IG1ha2VDb250ZXh0Q3VycmVudCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IG1ha2VDb250ZXh0Q3VycmVudCgpIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgaW50
IHdpZHRoKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgaW50IGhlaWdodCgpIHsgcmV0dXJu
IDA7IH0K
</data>
<flag name="review"
          id="103537"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>